sql >> Databáze >  >> NoSQL >> MongoDB

Získejte podmnožinu pole v mongodb pomocí zdroje pole

Jednoduše musíte $filter pole a ponechat pouze ty vnořené dokumenty, kde je hodnota je podmnožinou vašeho vstupního pole. Všimněte si, že hodnota zde je jedno pole prvků, kde prvek je vložené pole value .

let fruits = ["apple","banana","coconut"];

db.collection.aggregate([
    { "$project": { 
        "Element": { 
            "$filter": { 
                "input": "$Element", 
                "as": "el", 
                "cond": { 
                    "$setIsSubset": [ [ "$$el.Value" ], fruits ] 
                 }
            }
        }
    }}
])

Počínaje MongoDB 3.4* můžete použít $in operátor v $project fázi.

db.collection.aggregate([
    { "$project": { 
        "Element": { 
            "$filter": { 
                "input": "$Element", 
                "as": "el", 
                "cond": { 
                    "$in": [ "$$el.Value", fruits ] 
                 }
            }
        }
    }}
])

*Nevydaná verze MongoDB v době psaní tohoto článku




  1. Existuje alternativa Javy k Redis, kterou lze vložit?

  2. Uložení hashe MessagePacked v Redis

  3. Kdy použít úložiště klíč/hodnota, jako je Redis, místo/po boku databáze SQL?

  4. Dotazování na vložené objekty v Mongoidu/rails 3 (Operátory nižší než, Min a řazení)