我试图抓取信息数据库,但查询时遇到了麻烦。这是MongoDB中的基本数据库设置:
{
"ID": 346,
"data": [
{
"number": "23",
"name": "Winnie"
},
{
"number": "12",
"name": "Finn"
},
{
"number": "99",
"name": "Todd"
}
]
}
{
"ID": 346,
"data": [
{
"number": "12",
"name": "Ram"
},
{
"number": "34",
"name": "Greg"
},
{
"number": "155",
"name": "Arnie"
}
]
}
相关的Python代码如下:
import pymongo
import json
import io
import sys
from bson.json_util import dumps
from pymongo import MongoClient
stringArr = ['"23"', '"12"', '"155"']
for x in range(0, len(stringArr))
print(collection.find({"data.number" : stringArr[x]}).count())
当我输入collection.find({"data.number" : "23"}).count()
时,我会返回正确数量的条目,其中包含" 23"作为数据中的数字,所以我假设我在Python中查找的语法混乱,可能与变量是一个字符串,但我对MongoDB相当缺乏经验,更不用说PyMongo了。任何建议将不胜感激!
答案 0 :(得分:1)
$ elemMatch 运算符用于匹配属于BSON文档的数组字段中包含的值。
根据上述问题中的描述,请尝试在MongoDB shell中执行以下原始查询。
db.collection.find({
data: {
$elemMatch: {
number: {
$in: ["23", "12", "155"]
}
}
}
})