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

3 způsoby, jak vrátit odlišné hodnoty v MongoDB

Odlišné hodnoty jsou hodnoty s odstraněnými nadbytečnými duplikáty. Jinými slovy, odlišné hodnoty jsou jedinečné hodnoty.

V MongoDB existuje několik způsobů, jak můžeme v dotazu vrátit odlišné hodnoty. Tento článek představuje 3 způsoby, jak vrátit odlišné hodnoty v mongo shellu.

Ukázková data

Příklady na této stránce používají následující kolekci nazvanou pets :

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

distinct() Metoda

V MongoDB, db.collection.distinct() metoda najde odlišné hodnoty pro zadané pole v rámci jedné kolekce nebo pohledu a vrátí výsledky v poli.

Příklad:

db.pets.distinct( "type" )

Výsledek:

[ "Bat", "Cat", "Dog" ]

Tyto tři hodnoty jsou odlišné hodnoty pro type pole ve výše uvedených dokumentech.

pets část jednoduše pojmenovává kolekci, pro kterou se mají vrátit odlišné hodnoty.

db.collection.distinct() metoda je obalová metoda pro distinct příkaz (níže).

distinct Příkaz

V MongoDB je distinct aggregation příkaz najde odlišné hodnoty pro zadané pole v rámci jedné kolekce.

Vrátí dokument, který obsahuje pole různých hodnot a také vložený dokument se statistikou dotazů a plánem dotazů.

db.runCommand ( { distinct: "pets", key: "type" } )

Výsledek:

{ "values" : [ "Bat", "Cat", "Dog" ], "ok" : 1 }

Vidíme, že jsou vráceny stejné odlišné hodnoty, ale tentokrát jsou v dokumentu, který obsahuje i další informace.

$group Operátor agregace

V závislosti na vašich potřebách můžete také použít $group agregační operátor pro vrácení odlišných hodnot.

Příklad:

db.pets.aggregate( [ { $group : { _id : "$type" } } ] )

Výsledek:

{ "_id" : "Cat" }
{ "_id" : "Bat" }
{ "_id" : "Dog" }

V tomto případě jsou odlišné hodnoty vráceny v samostatných dokumentech.

Tento přístup může být užitečný, pokud očekáváte, že vaše výsledky budou velké. Pokud jsou vaše výsledky větší než maximální velikost BSON (16 megabajtů v době psaní), možná budete muset použít tento přístup.


  1. MongoDB Index na různých typech

  2. Základy řetězové replikace MongoDB

  3. Jak používat Redis v programu C++?

  4. Jak zkontrolovat nulu/null v Redis' Lua cjson?