我只想从 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/