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

Vælg et dokument, der har et bestemt nøgleværdipar, men ikke har et andet nøgleværdipar

Dit forespørgselsforsøg bruger den samme "nøgle" to gange. Du kan ikke gøre det i en objektstruktur, da du i det væsentlige "overvider" værdien af ​​den samme nøgle. Så den faktiske overvejede forespørgsel er kun den "anden" betingelse for den pågældende nøgle.

Så hvis du vil have flere betingelser for den samme nøgle, så brug $and operatør:

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

Eller da alle MongoDB-betingelser virkelig er "og"-argumenter som standard, kan du også angive $eq i dette tilfælde:

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

Bemærker her, at der ikke er noget særligt ved .aggregate() her selv, da det kun er den grundlæggende "forespørgsel" del, der udfører arbejdet med dokumentvalg.

Bemærk også, at med en "positiv" betingelse til stede ( $eq ) er det egentlig ikke nødvendigt at bruge $exists da du allerede tester, at i det mindste det element skal matche.




  1. Sådan tilslutter du dig to ekstra samlinger med betingelser

  2. mongodb aggregering php

  3. Hvad er en markør i MongoDB?

  4. Læs specifikke feltværdier fra MongodbC#