MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Übereinstimmung mit einem Array-Feld, das eine beliebige Kombination des bereitgestellten Arrays in MongoDB enthält

Sie können dies tun, indem Sie mehrere Operatoren kombinieren:

db.test.find({tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}}})

Das $elemMatch mit dem $nin findet die Dokumente, in denen ein einzelner tags ist -Element ist weder 'Rad' noch 'Cool', und dann ist das übergeordnete Element $not kehrt die Übereinstimmung um, um alle Dokumente zurückzugeben, bei denen diese mit keinem Element übereinstimmten.

Dies gibt jedoch auch Dokumente zurück, in denen tags sind entweder fehlt oder keine Elemente enthält. Um diese auszuschließen, müssen Sie einen Qualifizierer hinzufügen, der tags sicherstellt hat mindestens ein Element:

db.test.find({
    tags: {$not: {$elemMatch: {$nin: ['Rad', 'Cool']}}},
    'tags.0': {$exists: true}
})