gpt4 book ai didi

mongodb - 你如何告诉 Mongo 在限制结果之前对集合进行排序?

转载 作者:IT老高 更新时间:2023-10-28 11:04:19 24 4
gpt4 key购买 nike

我想从集合中选择最新的文档。这个问题的答案mongodb: how to get the last N records?表明查询中的操作顺序很重要。然而,情况似乎并非如此(也许自 Mongo 2.4 发布以来)。我已经尝试了以下两个查询,似乎 Mongo 首先应用了限制,然后执行了排序。

查询 1

myCollection.find().sort( { '$date': 1 }).limit(50, callback);

查询 2

myCollection.find().limit(50).sort( { '$date': 1 }, callback);

告诉 mongo 先排序并限制第二个的正确查询是什么?

编辑 --- 这是集合中的示例文档

{
_id: ObjectId("517eb0dddbab79c74700005d"),
audioFiles: [
{
audioFileName: "C64FEFA8-DD43-40A1-8996-35948F3438BF-6896-0000027BD4A59D91",
audioLanguage: "English",
date: ISODate("2013-05-21T16:23:04.006Z"),
flag: "1",
user: "36C4DEB6-C13D-4211-94B5-CC4DD993ECF1-6896-00000278FA7B08EC"
},
{
audioFileName: "994B6DF6-73B5-458F-912A-FF67A84534B2-23532-0000020000000000",
audioLanguage: "English",
date: ISODate("2013-05-27T10:45:04.107Z"),
flag: "1",
user: "9D7BB3F4-371B-4F2A-8DA2-0C4CE8B4E16D-974-0000000000000000"
}
],
date: ISODate("2013-04-29T17:41:49.101Z"),
imageFileName: "SteamLokomotive0498",
random: 0.6750695831142366,
thumbFileName: "SteamLokomotive0498_150x150",
user: "62923D8E-00CE-4F0C-AECA-3010D78FC9CE-226-0000000000000000",
userLanguagePref: "Cantonese"
}

最佳答案

问题是您需要按 date 而不是 $date 进行排序。

myCollection.find().sort({date: 1}).limit(50, callback);

Mongo 在限制结果之前应用排序,无论您在光标上调用 sortlimit 的顺序如何。

文档中的证明:link

db.bios.find().sort( { name: 1 } ).limit( 5 )
db.bios.find().limit( 5 ).sort( { name: 1 } )

The two statements are equivalent; i.e. the order in which you chain the limit() and the sort() methods is not significant. Both statements return the first five documents, as determined by the ascending sort order on ‘name’.

关于mongodb - 你如何告诉 Mongo 在限制结果之前对集合进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17509025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com