MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak uzyskać wartość licznika za pomocą $lookup w mongodb za pomocą golanga?

Tak więc Twoja agregacja faktycznie zwraca wszystkie comment dokumenty w resultField pole, które niejawnie zawiera liczbę wyników, jest to wycinek, którego długość można sprawdzić w Go za pomocą wbudowanej funkcji len() funkcja.

Ponieważ potrzebujesz tylko długości (liczba comment dokumentów), dlatego chcesz pobrać tylko rozmiar tej tablicy. W tym celu możesz użyć $addFields etap do zastąpienia resultField tablica z liczbą będącą długością tej tablicy.

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"},
        },
    },
})

Pamiętaj, że $addFields stage jest odpowiednikiem $project etap, który wyraźnie określa wszystkie istniejące pola w dokumentach wejściowych i dodaje nowe pola. Dostępne tylko od wersji MongoDB 3.4.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bezpiecznie wstawiaj lub aktualizuj poddokument w MongoDB

  2. Dlaczego wstawianie jest powolne w powłoce MongoDB 2.6 w porównaniu z poprzednimi wersjami?

  3. Wybierz na podstawie znacznika czasu i zaktualizuj znacznik czasu z zerem

  4. Dlaczego gridfs get nie działa na identyfikatorze pliku (ObjectId) tylko według nazwy pliku

  5. MongoDB Map/Reduce Array pytanie o agregację