无法计数存储在mongo db中的json数组的所有对象

编程入门 行业动态 更新时间:2024-10-09 15:14:41

无法计数存储在mongo db中的json<a href=https://www.elefans.com/category/jswz/34/1771288.html style=数组的所有对象"/>

无法计数存储在mongo db中的json数组的所有对象

我已经在mongodb中存储了一个包含Json对象数组的文档。看起来像:

{"_id":ObjectId("5ec3a08140a8e1365cbf7e6f")
   "boats":[   //json array of boat objects 
      {
        "_id" : ObjectId("5ec3a08140a8e1365cbf7e73"), 
        "model": "benet", 
        "year" : "01/01/2019", 
        price : 200 
      },
      {...}, 
      {...}, 
      {...} // other objects
   ]
}

我是mongodb的新手,我正在尝试计算价格为200的阵列船中的对象。我尝试如下操作:

db.getCollection('boatsCompany').find({'price' : 200}).count()

问题是它只计数并返回1,并且数组中的'price': 200可能有更多对象。

回答如下:

如果您想在所有文档中搜索价格不超过200的船只,请使用以下查询,

db.getCollection('boatsCompany').aggregate([
   {
      $project: {
         prices: {
            $filter: {
               input: "$boats",
               as: "boat",
               cond: { $eq: [ "$$boat.price", 200 ] }
            }
         }
      }
   },
   {
      $project: {
         numberOfBoats: { $size: "$prices" }
      }
   }
])

并且如果您想要一个公司,则应先将$ match与公司ID一起放入,然后搜索船只

db.getCollection('boatsCompany').aggregate([
   { $match : { "_id" : ObjectId("5ec3a08140a8e1365cbf7e6f") } },
   {
      $project: {
         prices: {
            $filter: {
               input: "$boats",
               as: "boat",
               cond: { $eq: [ "$$boat.price", 200 ] }
            }
         }
      }
   },
   {
      $project: {
         numberOfBoats: { $size: "$prices" }
      }
   }
])

更多推荐

无法计数存储在mongo db中的json数组的所有对象

本文发布于:2024-05-07 20:14:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757062.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   对象   mongo   db   json

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!