我希望为主题实现"碰撞"功能.一旦主题被碰撞,它将有一个新的"bump_date"字段.我想对它进行排序,以便当存在"bump_date"字段时,它将被排序为好像它是"已创建"字段.这是我的db.topics的一个例子:
{
"text" : "test 1",
"created" : "Sun Nov 20 2011 02:03:28 GMT-0800 (PST)"
},
{
"text" : "test 2",
"created" : "Sun Nov 18 2011 02:03:28 GMT-0800 (PST)"
},
{
"text" : "test 3",
"created" : "Sun Nov 17 2011 02:03:28 GMT-0800 (PST)",
"bump_date: : "Sun Nov 19 2011 02:03:28 GMT-0800 (PST)"
}
Run Code Online (Sandbox Code Playgroud)
我希望排序按"测试1","测试3","测试2"的顺序返回
Bri*_*cks 80
MongoDB中的排序是这样完成的:
db.collection.find({ ... spec ... }).sort({ key: 1 })
在哪里1上升和-1下降.
在您的具体示例中:db.topics.find().sort({ bump_date: 1 })尽管将其称为"updated_at"可能更好.
您还肯定要在"bump_date"字段中添加索引.
正如Brian Hicks建议的那样,创建一个额外的updated_at字段是可行的方法.这样,在创建文档时,您可以使created_at和updated_at最初相同.
{
"created_at": xxx,
"updated_at": xxx
}
Run Code Online (Sandbox Code Playgroud)
如果然后通过将updated_at字段设置为当有碰撞事件时的当前时间来"碰撞"updated_at字段,则可以对updated_at字段进行排序以实现所需的排序.
也:
db.collection.find( { $query: {}, $orderby: { column : -1 } } )
Run Code Online (Sandbox Code Playgroud)
其中1是升序,-1是降序.