作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,我想要做的是查询具有“巴黎”城市和“法国”州的所有文档。我需要进行某种连接,但我一直无法弄清楚如何构建它。
我正在使用 c# 驱动程序,但我很乐意接受使用任何方法的帮助。
{
"_id" : ObjectId("519b407f3c22a73a7c29269f"),
"DocumentID" : "1",
"Meta" : [{
"Name" : "City",
"Value" : "Paris",
}, {
"Name" : "State",
"Value" : "France",
}
}]
}
{
"_id" : ObjectId("519b407f3c22a73a7c29269g"),
"DocumentID" : "2",
"Meta" : [{
"Name" : "City",
"Value" : "Paris",
}, {
"Name" : "State",
"Value" : "Texas",
}
}]
}
最佳答案
$elemMatch
operator用于表示其中的所有条件必须由同一个数组元素匹配。所以(切换到 shell 语法)匹配所有包含元城市巴黎的文档
db.collection.find( {Meta:{$elemMatch:{Name:"City",Value:"Paris"}}} )
这确保您不会匹配名称:“somethingelse”,值:“Paris”在其数组某处与匹配名称:“City”的不同数组元素的东西。
现在,组合查询条件的默认组合是“and”,因此您可以继续添加属性:
db.collection.find( {Meta: {
$elemMatch:{Name:"City",Value:"Paris"},
$elemMatch:{Name:"State",Value:"France"}
}
}
)
现在,如果你想添加另一个条件,你继续添加它,但如果你想要一个 NOT,那么你可以这样做:
db.collection.find( {Meta: {
$elemMatch:{Name:"City",Value:"Paris"},
$elemMatch:{Name:"State",Value:"France"},
$not: {$elemMatch:{Name:"Arrondissement",Value:"Louvre"}}
}
}
)
关于mongodb - 如何在 MongoDB 中查询多个嵌套数据字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16670555/
我是一名优秀的程序员,十分优秀!