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

MongoDB, множествен брой (с $exists)

Имахте правилната основна идея, но $exists е условие на заявка, така че е валидно само в рамките на $match . Това, което искате, е $ifNull оператор, за да направи по същество същото нещо:

db.mycollection.aggregate( [
    { "$group": {
        "_id" : { "user_id": "$user_id" },
        "requestA_count": { "$sum": {
            "$cond": [ { "$ifNull": ["$requestA", false] }, 1, 0 ]
        } },
        "requestB_count": { "$sum": {
            "$cond": [ { "$ifNull": ["$requestB", false] }, 1, 0 ]
        } },
        "requestC_count": { "$sum": {
            "$cond": [ { "$ifNull": ["$requestC", false] }, 1, 0 ]
        } },
    } },
    { "$project": {
        "_id": 0,
        "user_id": "$_id.user_id",
        "requestA_count": 1,
        "requestB_count": 1,
        "requestC_count": 1
    } }
] );

Така че $ifNull или връща текущата стойност на полето, ако съществува, или се връща аргументът "дясна страна", ако не съществува. Върнатата стойност е различна от false се интерпретира като вярно (освен ако, разбира се, стойността всъщност е false).

По същество това ви дава същата функционалност за логическо тестване за съществуването на свойство в документа.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB findAndModify()

  2. PHP &Mongo във Vagrant, неуловено изключение „MongoException“ със съобщение „размерът на BSON документ е x байта, максимумът е 0“

  3. Как да премахнете дублиращи се записи от масив?

  4. Извършване на обединения в mongodb с три колекции?

  5. MongoDB, вграден в java