【发布时间】:2021-12-31 00:07:10
【问题描述】:
我有大量包含日期时间字段的文档,我需要检索任何给定查询列表的最新文档。
样本数据:
[
{"_id": "42.abc",
"ts_utc": "2019-05-27T23:43:16.963Z"},
{"_id": "42.def",
"ts_utc": "2019-05-27T23:43:17.055Z"},
{"_id": "69.abc",
"ts_utc": "2019-05-27T23:43:17.147Z"},
{"_id": "69.def",
"ts_utc": "2019-05-27T23:44:02.427Z"}
]
基本上,我需要获取“42”组的最新记录以及“69”组的最新记录。使用上面的示例数据,“42”组的期望结果将是文档“42.def”。
我目前的解决方案是一次查询一个组(使用 PyMongo 循环),按 ts_utc 字段排序,并将其限制为一个,但这真的很慢。 p>
// Requires official MongoShell 3.6+
db = db.getSiblingDB("someDB");
db.getCollection("collectionName").find(
{
"_id" : /^42\..*/
}
).sort(
{
"ts_utc" : -1.0
}
).limit(1);
有没有更快的方法来获得我想要的结果?
【问题讨论】:
-
向文档添加属性,例如“group”:“42”(或 69)。该道具和 ts_utc 道具上的索引。
标签: mongodb mongodb-query