我有一个收藏集“ logs”,我需要按照最新的顺序对其进行排序。使用findOne()
,我可以做到:
.sort($natural: -1)
但是现在什么也没做。
db('logs').find({'userId': userId}).sort({ $natural: -1}).toArray(function (err, result) {
if (err) console.error(err)
if (result.length > 0) {
console.log('Found ' + result.length + ' log entries', result)
if (callback) callback(result)
} else {
console.log('No log entries for ' + userId, userId)
if (callback) callback(null)
}
})
这与$natural: 1
输出相同。或者,如果我一起跳过sort()
。
收藏:
{_id: "5c044d13f4c6db53a047fe37", dateTime: "2018-12-02 22:22", userId: 5, event: "Failed to update Media Package sale", info: {userId: 5, AmountOfPrePaidItems: 1}}
{_id: "5c044d2bf4c6db53a047fe38", dateTime: "2018-12-02 22:22", userId: 5, event: "Failed to update Media Package sale", info: {userId: 5, AmountOfPrePaidItems: 0}}
{_id: "5c044d56f4c6db53a047fe39", dateTime: "2018-12-02 22:23", userId: 5, event: "Failed to update Media Package sale", info: {userId: 5, AmountOfPrePaidItems: 1}}
使用Atlas mongoDB 4.0.4
修改1:
.sort( _id: -1)
的输出顺序也相同
答案 0 :(得分:1)
对于您要尝试执行的操作,只需使用:
db('logs').find({'userId': userId}).sort({ _id: -1 })
如果您想获取最近的日期,因为_id
包含日期等。
就$natural
而言:
$ natural参数根据项目的自然顺序返回项目 在数据库中。此排序是内部实现 功能,您不应依赖其中的任何特定结构 它。
使用示例数据:
db.getCollection('items').find().sort({ _id: -1})
您得到:
/* 1 */
{
"_id" : "5c044d56f4c6db53a047fe39",
"dateTime" : "2018-12-02 22:23",
"userId" : 5,
"event" : "Failed to update Media Package sale",
"info" : {
"userId" : 5,
"AmountOfPrePaidItems" : 1
}
}
/* 2 */
{
"_id" : "5c044d2bf4c6db53a047fe38",
"dateTime" : "2018-12-02 22:22",
"userId" : 5,
"event" : "Failed to update Media Package sale",
"info" : {
"userId" : 5,
"AmountOfPrePaidItems" : 0
}
}
/* 3 */
{
"_id" : "5c044d13f4c6db53a047fe37",
"dateTime" : "2018-12-02 22:22",
"userId" : 5,
"event" : "Failed to update Media Package sale",
"info" : {
"userId" : 5,
"AmountOfPrePaidItems" : 1
}
}
请注意,首要文档是:
"_id" : "5c044d56f4c6db53a047fe39",
"dateTime" : "2018-12-02 22:23",
正在做:
db.getCollection('items').find().sort({ _id: 1})
注意:
"_id" : "5c044d13f4c6db53a047fe37",
"dateTime" : "2018-12-02 22:22",
是头号文件。