Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用mongodb在对象内部迭代数组_Javascript_Mongodb_Mongoose_Aggregation Framework - Fatal编程技术网

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

Javascript 如何使用mongodb在对象内部迭代数组,javascript,mongodb,mongoose,aggregation-framework,Javascript,Mongodb,Mongoose,Aggregation Framework,我尝试使用mongodb迭代对象键值内的数组,但它不起作用。如何实现它 数据库代码 您可以使用下面的聚合 db.product.aggregate([ { "$lookup": { "from": "category", "localField": "id", "foreignField": "_id", "as": "ordersetails" }}, { "$project": { "product_name": 1, "pro

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

数据库代码



您可以使用下面的聚合

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()

如果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();

如果ordersdetails中有多条记录,则该命令无效。@RishabhGarg请检查
localField
foreignField
。它的目标是另一个集合的
\u id
,这意味着该记录是唯一的。希望你能得到它。@Fanpark是的,没错。错过了身份证。