mongodb - 匹配mongodb数组中的元素

标签 mongodb mongo-scala-driver

我有以下收藏。

{
 "name" : "pqr" ,
 "loc" : 
   [ 
    {"area" : "c" , "country" : "d"},
    {"area" : "w" , "country" : "r"}
   ]
}

我想进行匹配,只匹配数组 loc 的第一个元素

这意味着如果

  1. 将区域指定为 c 或国家 d,然后返回文档。
  2. 将区域作为 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/

相关文章:

ruby-on-rails - MongoMapper:维护基于键作为数组的关联的排序顺序

mongodb - Mongo Scala 驱动程序 2.1 - 案例类错误

mongodb - 用于案例类的 Scala mongo 驱动程序自定义编解码器

斯卡拉 + MongoDB : optional fields and immutables

node.js - 如何检查 mongodb 中是否已创建模式?

java - 查询嵌套文档数组以获得字段的最大值

mongodb - 在 MongoDB 数组中查找重复值

MongoDb:在不同情况下的范围内搜索值

mongodb - 不坚持 Scala None's 而不是坚持为空值