【问题标题】:Passing a String Variable into Pymongo Query将字符串变量传递给 Pymongo 查询
【发布时间】:2017-11-15 16:46:49
【问题描述】:

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

【问题讨论】:

  • 为什么你有'"155"' 为什么不只是'155'?
  • 成功了,谢谢!!!!

标签: python mongodb pymongo querying


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-06-25
    • 2019-02-15
    • 1970-01-01
    • 2015-12-25
    • 2020-06-16
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多