我需要在MongoDB中的集合中获取第一个插入的记录,我目前正在使用以下查询:
db.users.find({}).sort({"created_at":1}).limit(1);
但是,这占用了大量内存。该馆藏有大约 100K 条记录。
做到这一点的有效方法是什么?
MongoDB _id 是唯一标识符,在将文档插入 MongoDB 集合时自动生成
_id字段存储 ObjectId 值并自动编制索引。
根据MongoDB文档,
12 字节 ObjectId 值包括:
4 字节值,表示自 Unix 纪元以来的秒数,
3字节机器标识符,
2 字节进程 ID,以及
3 字节计数器,从随机值开始。
根据上述问题中提到的描述来获取第一个插入的记录,请尝试在MongoDB shell中执行以下mongodb查找操作。
db.users.find({}).sort({"_id":1}).limit(1);
在上面的查询中,我们根据_id字段对结果进行了排序_id因为对象 ID 值由 unix 纪元时间戳组成
您还可以在查询中添加特定的过滤器,以获取为该条件插入的第一条记录:
就像假设您收集的数据包含用于存储来自 IT、行政、财务部门的员工的数据,并且您想查找为 IT 插入的第一个文档(即第一个 IT 员工(,那么您可以执行:
db.users.find({"Dept" : "IT"}).sort({"_id":1}).limit(1);
同样要找到最后一个员工:
db.users.find({"Dept" : "IT"}).sort({"_id":-1}).limit(1);
注意:对于较大的集合/分片集合,需要相当长的时间才能获得结果,因为它会迭代整个_id字段以达到升序和降序条件。