MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да получите стойността на броя с помощта на $lookup в mongodb с помощта на golang?

Така че вашето агрегиране всъщност връща всички comment документи в resultField поле, което имплицитно съдържа броя на резултатите, то е част от която можете да проверите дължината в Go с помощта на вградения len() функция.

Тъй като имате нужда само от дължината (броя на comment документи), затова искате да извлечете само размера на този масив. За тази цел можете да използвате $addFields етап за замяна на resultField масив с число, което е дължината на този масив.

pipe := c.Pipe([]bson.M{
    {
        "$lookup": bson.M{
            "from":         "comment",
            "localField":   "_id",
            "foreignField": "post_id",
            "as":           "resultField",
        },
    },
    {
        "$addFields": bson.M{
            "resultField": bson.M{"$size": "$resultField"},
        },
    },
})

Имайте предвид, че $addFields етап е еквивалентен на $project етап, който изрично указва всички съществуващи полета във входните документи и добавя новите полета. Предлага се само от MongoDB версия 3.4.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. C# Mongodb. Сумарно поле за всички документи

  2. Как да използвам fetchNewObject с update.one ReactiveMongo?

  3. Как да наложа проверка на типа за стойност на документ в MongoDB?

  4. Намиране на MongoDB в колекция с неизвестен ключ

  5. грешка TS2688:Не може да се намери файл с дефиниция на тип за „bson“