Как вернуть документы конвейера Mongodb Aggregate в ОДИН документ?

# #mongodb #mongodb-query #aggregate-functions #mgo

Вопрос:

Я знаю, что это должно быть просто, но, клянусь жизнью, я не могу создать правильный финальный этап в своем конвейере, чтобы это сработало. Вот документы, выводимые с этапа, который у меня есть в запросе mongo:

 { "_id" : ObjectId("61435ceb233ce0118c1d93ec") }
{ "_id" : ObjectId("61435cf29598d31c17f0d839") }
{ "_id" : ObjectId("611e5cf953396d78985d222f") }
{ "_id" : ObjectId("61435cf773b8b06c848af83e") }
{ "_id" : ObjectId("61435cfd7ac204efa857e7ce") }
{ "_id" : ObjectId("611e5cf953396d78985d2237") }
 

Я хотел бы объединить эти документы в один документ с массивом как таковым:

 { 
   "_id" : [
      ObjectId("61435ceb233ce0118c1d93ec"),
      ObjectId("61435cf29598d31c17f0d839"),
      ObjectId("611e5cf953396d78985d222f"),
      ObjectId("61435cf773b8b06c848af83e"),
      ObjectId("61435cfd7ac204efa857e7ce"),
      ObjectId("611e5cf953396d78985d2237")
   ]
}
 

Мой последний этап в разработке-это просто:

 {
   $group:{_id:"$uniqueIds"}
}
 

Я перепробовал все, от $push до $mergeObjects, но что бы я ни делал, он продолжает возвращать исходные 6 документов в той или иной форме или форме вместо ОДНОГО документа. Любой совет был бы очень признателен! Заранее спасибо.

Ответ №1:

Тестовый код здесь

Запрос

  • группировка по null, рассматривает всю коллекцию как 1 группу
 db.collection.aggregate([
  {
    "$group": {
      "_id": null,
      "ids": {
        "$push": "$_id"
      }
    }
  },
  {
    "$unset": "_id"
  }
])
 

Комментарии:

1. Спасибо, Такис!! Это сработало идеально!

2. документация mongodb настолько хороша, что также содержит примеры.