sql >> Databasteknik >  >> NoSQL >> MongoDB

Välj dokument som har ett särskilt nyckelvärdespar men som inte har något annat nyckelvärdespar

Ditt sökförsök använder samma "nyckel" två gånger. Du kan inte göra det i en objektstruktur eftersom du i huvudsak "övertygar" värdet på samma nyckel. Så den faktiska frågan som betraktas är bara det "andra" villkoret för den nyckeln.

Så om du vill ha flera villkor för samma nyckel, använd sedan $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 eftersom alla MongoDB-villkor verkligen är "och"-argument som standard, kan du också ange $eq i det här fallet:

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

Noterar här att det inte finns något speciellt med .aggregate() här själv, eftersom det bara är den grundläggande "fråga"-delen som gör jobbet med dokumentval.

Observera också att med ett "positivt" villkor närvarande ( $eq ) är det egentligen inte nödvändigt att använda $exists eftersom du redan testar att åtminstone det elementet måste matcha.




  1. hur man tar bort array med värdet null efter unset i mongodb

  2. Kan inte få Jedis-anslutning när du använder SSL med Redis och Spring Data Redis

  3. Mongoid:använder du mer än en databas?

  4. MongoDB/PyMongo:Frågar flera kriterier - oväntade resultat