sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB - Filtrering af indholdet af et internt array i et resultatsæt

Du kan bruge aggregeringsramme for MongoDB .

Hvis du har et dokument i din samling som;

{
 "URL": "www.stackoverflow.com",
 "TAGS": [
         {"NAME": "question", "VOTES": 3},
         {"NAME": "answer", "VOTES": 5},
         {"NAME": "problem", "VOTES": 2}
         ]
}

og du vil filtrere nogle elementer af arrayet ud, kan du bruge aggregeringseksemplet;

db.sof_table.aggregate
([
{$unwind:'$TAGS'}, 
{$match:{'TAGS.NAME':{$in:['answer','question']}}},
{$group:{_id:'$URL',TAGS:{$push:'$TAGS'}}}
])

Dette vil resultere i;

{
    "result" : [
        {
            "_id" : "www.stackoverflow.com",
            "TAGS" : [
                {
                    "NAME" : "question",
                    "VOTES" : 3
                },
                {
                    "NAME" : "answer",
                    "VOTES" : 5
                }
            ]
        }
    ],
    "ok" : 1
}

som dit forventede resultat.



  1. HBase Performance CDH5 (HBase1) vs CDH6 (HBase2)

  2. E-mail-indeksering ved hjælp af Cloudera Search og HBase

  3. MongoDB:Hvordan finder man ud af, om et array-felt indeholder et element?

  4. MongoDB Aggregation Framework Stadier og Pipelining