非常新,并且在MongoDB上绝对没有受过教育。
拥有这个JSON结构:
{
"id": "123456",
"makes": {
"abc": {
"att1": 4,
"att2": "fffff",
"att3": 46
},
"fgh": {
"att1": 8,
"att2": "ggggg",
"att3": 6
},
"rty": {
"att1": 3,
"att2": "hhhh",
"att3": 4
},
"iop": {
"att1": 4,
"att2": "llll",
"att3": 3
}
}
}
如何查询数据库中的“fgh”make? 我试过了:
db.<myCollection>.find({"makes":"fgh"})
但这不起作用。 如果我写的话,它可以正常工作:
db.<myCollection>.find({"makes.fgh.att1":8})
提前谢谢你!
答案 0 :(得分:5)
当您尝试查询makes.fgh时,您不会对内容进行查询,而是对结构进行查询,因为“fgh”不是值而是子文档。
您可以使用$ exists搜索来实现此目的:
db.myCollection.find( { "makes.fgh" : { $exists : true } })
请参阅https://docs.mongodb.com/manual/reference/operator/query/exists/以供参考。
整合@ chridam的有用评论:
如果您只对那个子文档感兴趣,还可以在查找中添加投影:
db.myCollection.find({ "makes.fgh" : { $exists : true }}, { "makes.fgh" : 1 })
详情请查看https://docs.mongodb.com/manual/reference/method/db.collection.find/#db.collection.find。