Как добавить несколько документов из коллекции в mongodb 3.2

#node.js #mongodb

#node.js #mongodb

Вопрос:

Как я могу получить все сведения о «продуктах» в одном массиве и все «заголовки» в одной array.im используемой mongodb 3.2 версии

 getCartProducts: (userId) => {
return new Promise(async (resolve, reject) => {
    let cartItems = await db.get().collection(collection.CART_COLLECTION).aggregate([
        {
            $unwind: "$products",
        },
        {
            $lookup: {
                from: collection.PRODUCT_COLLECTION,
                localField: "products",
                foreignField: "_id",
                as: "cartItems"
            }
        },
        {
            $match: {
                "product": { $ne: [] }
            }
        }
       
    ]).toArray()
    resolve(cartItems)
})
}
 

Это мой текущий результат, который я получаю

 [
  {
    _id: 5f9ff4b1183ac302703b28b1,
    user: 5f8fcdd5687bf506e44c9b4a,
    products: 5f845d073340762378ba1522,
    cartItems: [ [Object] ]
  },
  {
    _id: 5f9ff4b1183ac302703b28b1,
    user: 5f8fcdd5687bf506e44c9b4a,
    products: 5f9b94d1ab78c11b142646cb,
    cartItems: [ [Object] ]
  },
  {
    _id: 5f9ff4b1183ac302703b28b1,
    user: 5f8fcdd5687bf506e44c9b4a,
    products: 5f9b953bab78c11b142646cd,
    cartItems: [ [Object] ]
  }
]
 

Это мой желаемый результат, который мне нужен. Я использую mongodb 3.2

 [ 
 {
    _id: 5f9ff4b1183ac302703b28b1,
    user: 5f8fcdd5687bf506e44c9b4a,
    products:[ 5f845d073340762378ba1522,5f9b94d1ab78c11b142646cb,5f9b953bab78c11b142646cd ]
    cartItems: [ [Object],[Object],[Object] ]
  }
]
 

Ответ №1:

Добавьте этот этап:

Игровая площадка

   {
    $group: {
      "_id": "$_id",
      user: {
        "$first": "$user"
      },
      cartItems: {
        $push: {
          $arrayElemAt: [
            "$cartItems",
            0
          ]
        }
      },
      products: {
        $push: "$products"
      }
    }
  }