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

Vyberte dokument, který má konkrétní pár klíč-hodnota, ale nemá jiný pár klíč-hodnota

Váš pokus o dotaz používá stejný "klíč" dvakrát. V objektové struktuře to nemůžete udělat, protože v podstatě „přepisujete“ hodnotu stejného klíče. Skutečný uvažovaný dotaz je tedy pouze „druhou“ podmínkou pro tento klíč.

Pokud tedy chcete mít více podmínek pro stejný klíč, použijte $and operátor:

db.collection.aggregate([
    { "$match": {
        "$and": [
            { "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
            { "genericParams.key": "third_sms_email_time" }
        ] 
    },
    // other stages
})

Nebo protože všechny podmínky MongoDB jsou ve výchozím nastavení skutečně argumenty "a", můžete také zadat $eq v tomto případě:

db.collection.aggregate([
    { "$match": {
        "genericParams.key": { 
            "$ne": "manual_refund_processed", 
            "$eq": "third_sms_email_time"
        }
    }},
    // other stages
])

Zde je třeba poznamenat, že na .aggregate() není nic zvláštního zde samo o sobě, protože je to pouze základní část „dotazu“, která vykonává práci při výběru dokumentu.

Všimněte si také, že pokud je přítomna "pozitivní" podmínka ( $eq ) není opravdu nutné používat $exists protože již testujete, že alespoň tento prvek musí odpovídat.




  1. Jak použít podmínku 'OR' v příkazu redis keys

  2. Jak provést addToSet pomocí oficiálního ovladače Go?

  3. Jak získat více hodnot seznamu v jednom volání v RedisTemplate klienta Jedis

  4. Skupina MongoDB s více ID