我是mongodb的新手。我有一个mongodb文档,其结构如下:
"prices": {
"0": {
"Quantity": {
"1": "10",
"2": "14",
"5": "16",
},
"option1": "a4",
"option2": "50",
"option3": "qwe",
"option4": "sdslk"
},
"1": {
"Quantity": {
"1": "20",
"2": "12",
"10": "3",
},
"option1": "a5",
"option2": "100",
"option3": "kl",
"option4": "oiuio"
},
"2": {
"Quantity": {
"10": "20",
"15": "12",
"100": "3",
},
"option1": "a2",
"option2": "10",
"option3": "kadl",
"option4": "qwqw"
},
...
}
我有像这样的PHP数组
Array => ("option1" => "a2",
"option2"=> "10",
"option3"=> "kadl",
"option4"=> "qwqw"
)
我想查询文档,使其与mongodb文档中的特定子数组匹配,并返回以下结果
"2": {
"Quantity": {
"10": "20",
"15": "12",
"100": "3",
},
"option1": "a2",
"option2": "10",
"option3": "kadl",
"option4": "qwqw"
}
但仅限于所有对应的值(数量匹配除外)。 选项(option1,option2,...)对于不同的文档是不同的。 请评论是问题不清楚
答案 0 :(得分:0)
不可能,因为您不知道要匹配的密钥的名称。也许您希望prices
实际上是一个数组?
{ "prices" : [{
"Quantity": {
"10": "20",
"15": "12",
"100": "3",
},
"option1": "a2",
"option2": "10",
"option3": "kadl",
"option4": "qwqw"
}] }
然后你可以得到你想要的东西:
db.test.find({ "prices" : { "$elemMatch" : { "option1" : "a2", "option2" : "10", "option3" : "kadl", "option4" : "qwqw" } } }, { "prices.$" : 1 })