最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 13浏览 0评论

无法计数存储在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数组的所有对象

我已经在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" }
      }
   }
])
11136
发布评论

评论列表 (0)

  1. 暂无评论