Pymongo $在查询中不起作用

时间:2016-08-12 13:54:52

标签: python mongodb pymongo pymongo-3.x

在Pymongo $in查询中看到一些奇怪的行为。查找符合以下查询的记录:

speciesCollection.find({"SPCOMNAME":{"$in":['paddlefish','lake sturgeon']}})

查询不返回任何记录。

如果我将它更改为find_one,它将返回Lake Sturgeon的最后一个值。该字段是一个带有一个vaule的文本。所以我正在寻找与白鲟或鲟鱼湖相匹配的记录。

在Mongo Shell中它可以正常工作:

speciesCollection.find({SPCOMNAME:{$in: ['paddlefish','lake strugeon']}},{_id:0})

以下是shell

的结果
{ "SPECIES_ID" : 1, "SPECIES_AB" : "LKS", "SPCOMNAME" : "lake sturgeon", "SP_SCINAME" : "Acipenser fulvescens
{ "SPECIES_ID" : 101, "SPECIES_AB" : "PAH", "SPCOMNAME" : "paddlefish", "SP_SCINAME" : "Polyodon spathula" }

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:16)

我认为您的程序中存在拼写错误或其他错误,因为我只是对您的示例数据和查询进行了测试并且它有效 - 请参阅GIF

下面是我的测试代码,它连接到名为so的数据库和集合speciesCollection,也许您在其中发现了错误

import pymongo

client = pymongo.MongoClient('dockerhostlinux1', 30000)
db = client.so
coll = db.speciesCollection

result = coll.find({"SPCOMNAME":{"$in":['paddlefish','lake sturgeon']}})
for doc in result:
    print(doc)

GIF