我有以下收藏。
{
"name" : "pqr" ,
"loc" :
[
{"area" : "c" , "country" : "d"},
{"area" : "w" , "country" : "r"}
]
}
我想进行匹配,只匹配数组 loc 的第一个元素
这意味着如果
- 将区域指定为 c 或国家 d,然后返回文档。
- 将区域作为 w 或国家作为 r 然后不返回元素
只匹配mongo数组的第一个元素
这在 mongo 中可能吗?
如果有人知道请回复
谢谢
最佳答案
所以如果你只想返回第一个匹配的元素,你应该使用 limit(n)
和这样的查询:
1.将区域指定为 c 或国家 d,然后返回文档。
db.items.find( { $or : [ {"loc.area": "c" } ,
{"loc.country ": "d" } ] } ).limit(1);
2.将区域作为 w 或国家作为 r 然后不返回元素
db.items.find( { $or : [ {"loc.area": { "$ne" : "w" } },
{"loc.country": { "$ne" : "r" } } ] } ).limit(1);
如果您只想搜索嵌套数组的第一个元素,您可以使用位置运算符通过添加 .0.
-> loc.0.area
来实现。
更新:我首先误解了你的问题。现在我看到您正在寻找 loc.0.area。
关于mongodb - 匹配mongodb数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5647120/