将字符串变量传递给Pymongo查询

时间:2017-06-13 18:53:57

标签: python mongodb pymongo querying

我试图抓取信息数据库,但查询时遇到了麻烦。这是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了。任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

$ elemMatch 运算符用于匹配属于BSON文档的数组字段中包含的值。

根据上述问题中的描述,请尝试在MongoDB shell中执行以下原始查询。

    db.collection.find({
    data: {
        $elemMatch: {
            number: {
                $in: ["23", "12", "155"]
            }
        }
    }
})