如何获取选中文档在mongo集合中的位置(索引)?
例如,这个文档:db.myCollection.find({"id":12345})
在myCollection
中有索引3
myCollection:
id: 12340, name: 'G'
id: 12343, name: 'V'
id: 12345, name: 'A'
id: 12348, name: 'N'
发布于 2012-05-30 19:17:39
如果您的要求是查找文档的位置而不考虑顺序,那么这是不可能的,因为MongoDb不会按特定顺序存储文档。但是,如果您想知道基于某个字段的索引,例如_id
,则可以使用此方法。
如果您严格遵循_id
字段中的自动递增。您可以计算所有值小于该_id
的文档,比方说n,那么n+1将是基于_id
的文档索引。
n = db.myCollection.find({"id": { "$lt" : 12345}}).count() ;
如果从集合中删除文档,这也是有效的。
发布于 2016-10-17 11:03:12
这可能是非常慢但简单的方法。在这里,您可以像往常一样传递查询。我只是循环所有的文档,并检查if条件是否与记录匹配。在这里,我正在检查_id字段。您可以使用任何其他单个字段或多个字段来检查它。
var docIndex = 0;
db.url_list.find({},{"_id":1}).forEach(function(doc){
docIndex++;
if("5801ed58a8242ba30e8b46fa"==doc["_id"]){
print('document position is...' + docIndex);
return false;
}
});
发布于 2012-05-30 18:11:12
就像MySQL f.e.一样,MongoDB没有办法返回它,因为它不会将文档按顺序保存在数据库中。不命名行号。
jhonkola的ObjectID技巧只有在只有一个客户端创建新元素时才有效,因为ObjectID是在客户端生成的,第一部分是时间戳。如果不同的客户端与同一台服务器通信,则无法保证顺序。尽管如此,我不会依赖于这一点。
我也不太明白你在尝试做什么,所以也许在你的问题中提到这一点?然后我就可以更新答案了。
https://stackoverflow.com/questions/10813908
复制相似问题