在MongoDB的数组中匹配元素

3
我有以下的集合。
{
 "name" : "pqr" ,
 "loc" : 
   [ 
    {"area" : "c" , "country" : "d"},
    {"area" : "w" , "country" : "r"}
   ]
}

我希望能够创建一个匹配规则,只匹配数组 loc 的第一个元素。

这意味着如果:

  1. 区域为 c 或国家为 d,则返回文档。
  2. 区域为 w 或国家为 r,则不返回元素。

只匹配 mongo 数组的第一个元素。

在 mongo 中是否可行?

如果有人知道,请回复。

谢谢。

1个回答

3

如果你想只返回第一个匹配的元素,你应该使用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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接