首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取所选文档在集合中的位置[mongoDB]

获取所选文档在集合中的位置[mongoDB]
EN

Stack Overflow用户
提问于 2012-05-30 17:52:45
回答 5查看 18.5K关注 0票数 26

如何获取选中文档在mongo集合中的位置(索引)?

例如,这个文档:db.myCollection.find({"id":12345})myCollection中有索引3

代码语言:javascript
复制
myCollection:
    id: 12340, name: 'G'
    id: 12343, name: 'V'
    id: 12345, name: 'A'
    id: 12348, name: 'N'
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-30 19:17:39

如果您的要求是查找文档的位置而不考虑顺序,那么这是不可能的,因为MongoDb不会按特定顺序存储文档。但是,如果您想知道基于某个字段的索引,例如_id,则可以使用此方法。

如果您严格遵循_id字段中的自动递增。您可以计算所有值小于该_id的文档,比方说n,那么n+1将是基于_id的文档索引。

代码语言:javascript
复制
n = db.myCollection.find({"id": { "$lt" : 12345}}).count() ;

如果从集合中删除文档,这也是有效的。

票数 41
EN

Stack Overflow用户

发布于 2016-10-17 11:03:12

这可能是非常慢但简单的方法。在这里,您可以像往常一样传递查询。我只是循环所有的文档,并检查if条件是否与记录匹配。在这里,我正在检查_id字段。您可以使用任何其他单个字段或多个字段来检查它。

代码语言:javascript
复制
var docIndex = 0;
db.url_list.find({},{"_id":1}).forEach(function(doc){
  docIndex++;
  if("5801ed58a8242ba30e8b46fa"==doc["_id"]){
    print('document position is...' + docIndex);
    return false;
  }
});
票数 3
EN

Stack Overflow用户

发布于 2012-05-30 18:11:12

就像MySQL f.e.一样,MongoDB没有办法返回它,因为它不会将文档按顺序保存在数据库中。不命名行号。

jhonkola的ObjectID技巧只有在只有一个客户端创建新元素时才有效,因为ObjectID是在客户端生成的,第一部分是时间戳。如果不同的客户端与同一台服务器通信,则无法保证顺序。尽管如此,我不会依赖于这一点。

我也不太明白你在尝试做什么,所以也许在你的问题中提到这一点?然后我就可以更新答案了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10813908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档