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

unie ve stejné kolekci v mongodb

Nejbližší operátor MongoDB k tomu, co hledáte, je $or , ale to není úplně stejné jako SQL UNION, která kombinuje dva samostatné dotazy do jednoho výsledku. Dotazy MongoDB jsou vždy proti jedné kolekci, ale $or umožňuje mít více klauzulí dotazu.

Například:

db.collection.find(
    // Find documents matching any of these values
    {$or:[
        {var1: 123},
        {var2: 456},
        {var3: 789}
    ]}
).sort(
    // Sort in ascending order
    {var1:1, var2:1, var3:1}
)

Protože se omezujete na dotazování jedné kolekce, výsledky budou již na úrovni dokumentu deduplikovány a všechny výsledky budou sdílet stejné pořadí řazení, pokud je zadáno.

Pokud chcete simulovat UNION (nebo jinou operaci pracující s více kolekcemi/dotazy) v MongoDB, budete muset napsat více dotazů a sloučit sady výsledků v kódu vaší aplikace.




  1. Preemptivní zabezpečení s protokolováním auditu pro MongoDB

  2. Chyba Mongo na I control hotfix

  3. Mongoose:Porovnání ObjectId nekonzistentně selhávají

  4. MongoError:Volba 'cursor' je povinná, s výjimkou agregace s argumentem vysvětlení