首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PYMONGO -如何在MongoID中使用查询$in操作符?

PYMONGO -如何在MongoID中使用查询$in操作符?
EN

Stack Overflow用户
提问于 2014-07-04 17:57:54
回答 1查看 6.4K关注 0票数 6

因此,我试图在Pymongo中使用$in操作符,在那里我想使用一堆MongoID进行搜索。

首先,我有一个查询来查找MongoID数组:

代码语言:javascript
运行
复制
findUsers = db.users.find_one({'_id':user_id},{'_id':0, 'f':1})

如果我打印findUsers['f'],它看起来如下所示:

代码语言:javascript
运行
复制
[ObjectId('53b2dc0b24c4310292e6def5'), ObjectId('53b6dbb654a7820416a12767')]

这些对象IDs是用户ids,我要做的是使用这个ObjectID数组查找用户集合中的所有用户。所以我的想法是:

代码语言:javascript
运行
复制
foundUsers = db.users.find({'_id':{'$in':findUsers['f']}})

但是,当我打印foundUsers时,结果是:

代码语言:javascript
运行
复制
<pymongo.cursor.Cursor object at 0x10d972c50>

当我打印出一个查询时,这并不是我通常得到的:

我在这里做错什么了?

非常感谢。

另外,为了供您参考,我在mongo shell中进行了查询,它的工作原理与预期的一样:

代码语言:javascript
运行
复制
db.users.find({_id: {$in:[ObjectId('53b2dc0b24c4310292e6def5'), ObjectId('53b6dbb654a7820416a12767')]}})
EN

Stack Overflow用户

回答已采纳

发布于 2014-07-04 18:36:03

您在MongoDB中遇到了MongoDB()和find()之间的区别。findOne返回一个文档。find()返回一个mongoDB游标。通常,您必须在游标上迭代以显示结果。您的代码在mongo中工作的原因是,如果mongo返回20个文档或少于20个文档,则mongo对游标的处理方式不同--它为您处理游标上的迭代:

游标 在mongo中,读取操作的主要方法是db.collection.find()方法。此方法查询集合并将光标返回给返回的文档。 要访问文档,需要迭代游标。但是,在mongo中,如果返回的游标没有使用var关键字分配给变量,则游标将自动迭代最多20次1,以打印结果中的前20个文档。

http://docs.mongodb.org/manual/core/cursors/

关于遍历游标的pymongo手册页可能是一个很好的起点:

http://api.mongodb.org/python/current/api/pymongo/cursor.html

但是,这里有一段代码,可以为您演示基本知识。在调用find()之后,运行以下命令:

代码语言:javascript
运行
复制
for doc in findUsers:
    print(doc)
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24579066

复制
相关文章

相似问题

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