如何使用 mongodb 在对象内迭代数组

Posted

技术标签:

【中文标题】如何使用 mongodb 在对象内迭代数组【英文标题】:How to iterate array inside the object using mongodb 【发布时间】:2019-11-03 06:08:09 【问题描述】:

我尝试使用 mongodb 迭代对象键值内的数组。但它不起作用。如何实现它。

数据库代码


【问题讨论】:

【参考方案1】:

你可以使用下面的聚合

db.product.aggregate([
   "$lookup": 
    "from": "category",
    "localField": "id",
    "foreignField": "_id",
    "as": "ordersetails"
  ,
   "$project": 
    "product_name": 1,
    "product_image":  "$arrayElemAt": ["$product_image", 0] ,
    "ordersetails":  "$arrayElemAt": ["$ordersetails.name", 0] 
  
]).toArray()

【讨论】:

如果ordersdetails中有多个记录,则无法使用。 @RishabhGarg 请检查localFieldforeignField。它针对另一个集合的_id,这意味着该记录是唯一的。希望你能得到它。 @Fanpark 是的,是的。错过了_id。【参考方案2】:

如果您在 orderdetails 数组中有多个对象,则可以使用以下查询:

db.product.aggregate([
    
      $lookup: 
        from: "category",
        localField: "category_id",
        foreignField: "id",
        as: "ordersetails"
      
    ,
    
      $project: 
        product_name: 1,
        product_image:  $arrayElemAt: ["$image", 0] ,
        ordersetails: 1
      
    , 
    
       $unwind: "ordersetails"
    ,
    
      $project: 
        product_name: 1,
        product_image: 1,
        ordersetails: "$ordersetails.name"
      
    , 
  ]).toArray();

【讨论】:

以上是关于如何使用 mongodb 在对象内迭代数组的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB。如何更新数组内的json属性

MongoDB:如何使用查找查询填充嵌套对象?

如何在UL中迭代使用appendChild和片段LI?

如何使用 mongoose 或 mongodb 查询更改架构内的方案数组内的值。?

使用 mongoose 在 mongoDb 中更新数组内的对象 [重复]

如何使用 MongoDB 在数组中的对象中更新数组中的对象中的文档?