【发布时间】:2014-06-27 22:26:25
【问题描述】:
我有一个集合,其中一些对象具有键 foo。我现在尝试查询所有确实具有此键但不具有特定值bar 的对象。为此,我使用以下查询:
collection.find({'foo': {'$exists': True}, 'foo': {'$ne': 'bar'}})
我认为这两个标准都是通过逻辑 AND 连接的。但是,我也得到了不具有密钥 foo 的对象。事实上,当我只使用查询时,我得到了相同的结果
collection.find({'foo': {'$ne': 'bar'}})
另一方面,如果我使用
collection.find({'foo': {'$exists': True}})
我正确地只获取带有foo 的对象,但显然是所有对象,因此其中一些具有bar 的值。
我必须如何制定我的查询以实现我的初始结果?是否有一种测试多个标准的顺序?我是否明确指定了两个条件的逻辑与?
【问题讨论】:
-
这是一个很好的基本 pymongo 查询示例。我希望它在我用谷歌搜索“pymongo find examples”时早点出现:-\。 +1
-
我认为不需要 PyMongo 的具体示例,因为语法与使用 Mongo shell 时的语法基本相同。我认为 Mongo shell 在关键字和字段名称周围加引号时更加慷慨(例如,
{$ne : 'bar'}应该和{'$ne' : 'bar'}一样有效)。也许True的大写也很重要。
标签: python mongodb pymongo querying