python - MongoDB:查询名称中有空格的键

标签 python mongodb mongodb-query pymongo

我只想从 MongoDB 集合中检索某些键的值。

但是,该集合有一些名称中带有“空格”的键,例如:

"Parent":{"key1": //some string,
          "key2": //some string,
          "key 3": //some string}

我知道这是一种错误的方法,因为理想情况下键名中不应该有空格,但是我该如何查询这个键呢?我正在使用 Python 和 PyMongo。

对于普通键,我可以这样做:

db.coll_name.find({"key": "India"}, {"_id": 0, "Parent.key1": 1, "Parent.key2": 1})

那么如何在上述查询的第二个参数中使用键“Parent['key 3']”呢?有什么办法可以实现吗?

这是返回数据(有效)的查询:

db.coll_name.find({}, {"Parent.key1": 1, "_id": 0})

这是不返回数据的查询:

db.coll_name.find({}, {"Parent['key 3']": 1, "_id": 0})

最佳答案

好吧,你可以构建它的唯一方法是:

content = {};
content["Parent"] = {}
content["Parent"]["key2"] = 1
content["Parent"]["key 3"] = 1

db.coll_name.insert(content)

但是您似乎忽略了这样做并没有错:

db.coll_name.find({ "Parent.key 3":  1} )

或投影

 db.coll_name.find({}, { "Parent.key 3": 1 })

"dot notation"而不是对象表示法,只要你引用键名(对于点表示法是强制性的)那么一切都很好,你可以在那里有一个空格。

关于python - MongoDB:查询名称中有空格的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31367145/

相关文章:

mongodb - 使用 MongoCollection.FindAll 两次返回相同的文档

带有 $in 的 mongodb 聚合查询的 Java 代码

MongoDB $project : $filter sub-array

python - 3darray 训练/测试 TensorFlow RNN LSTM

mongodb - 检查字段是否是多个值之一

node.js - MongoDB 返回结果的关联数组

node.js - docker容器崩溃并退出,代码为139

python - 解析格式不良的 HTML/XML 内容

python - 在Python中动态构建 "array of strcuts"

python - 如何使用第一行作为键的csv文件创建字典