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

Policz zarówno zewnętrzną, jak i wewnętrzną tablicę osadzoną w jednym zapytaniu

Możesz użyć $reduce i $concatArrays „scalić” wewnętrzna „tablica tablic” w pojedynczą listę i zmierz $size tego. Następnie po prostu $add oba wyniki razem:

db.posts.aggregate([
  { "$match": { _id:ObjectId("5dbdacc28cffef0b94580dbd") } },
  { "$addFields": {
    "totalBoth": {
      "$add": [
        { "$size": "$comments" },
        { "$size": {
          "$reduce": {
            "input": "$comments.replies",
            "initialValue": [],
            "in": {
              "$concatArrays": [ "$$value", "$$this" ] 
            }
          }
        }}
      ]
    }
  }}
])

Zauważając, że "tablica tablic" jest efektem wyrażenia takiego jak $comments.replies , więc stąd operacja, aby utworzyć z nich pojedynczą tablicę, w której można zmierzyć wszystkie elementy.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak korzystać z MongoDB Stitch w aplikacjach na Androida

  2. Węzeł wstawia duże dane za pomocą mangusty

  3. paginacja tablicy mongoDB

  4. Mongoose wyszukiwanie tekstowe z częściowym ciągiem

  5. Czy mongodb działa?