MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB различен()

В MongoDB, db.collection.distinct() методът намира отделните стойности за определено поле в една колекция или изглед и връща резултатите в масив.

Различни стойности са тези с премахнати излишни дубликати. Различните стойности са уникални стойности. Например, ако имате 2 или 3 документа с една и съща стойност, distinct командата ще върне само една стойност.

db.collection.distinct() е метод за обвивка на обвивката за distinct команда.

Пример

Да предположим, че имаме колекция, наречена 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() метод за връщане на отделните типове домашни любимци.

db.pets.distinct( "type" )

Резултат:

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

Така че, въпреки че има четири кучета и две котки, масивът съдържа само едно от всяко. distinct() метод премахна дублиращите се стойности.

Оригиналният документ има само един bat и така distinct() методът не променя това – нямаше дублиращи се стойности за дедупиране.

Вградени документи

Можете да използвате нотация с точки, за да получите различни стойности от вградено поле

Да предположим, че имаме колекция, наречена products който съдържа следните документи:

{ "_id" : 1, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "S", "M", "L" ] }
{ "_id" : 2, "product" : { "name" : "Shirt", "color" : "Green" }, "sizes" : [ "S", "M", "XL" ] }
{ "_id" : 3, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "S", "M", "L" ] }
{ "_id" : 4, "product" : { "name" : "Shorts", "color" : "Green" }, "sizes" : [ "M", "XS" ] }
{ "_id" : 5, "product" : { "name" : "Shorts", "color" : "Brown" }, "sizes" : [ "S", "M" ] }
{ "_id" : 6, "product" : { "name" : "Cap", "color" : "Purple" }, "sizes" : [ "M" ] }
{ "_id" : 7, "product" : { "name" : "Shoes", "color" : "Brown" }, "sizes" : [ "S", "M", "L" ] }
{ "_id" : 8, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "M", "L", "XL" ] }
{ "_id" : 9, "product" : { "name" : "Cap", "color" : "Green" }, "sizes" : [ "M", "L" ] }

Можем да използваме следната заявка, за да върнем различни стойности за имената на продуктите.

db.products.distinct(
    "product.name"
)

Резултат:

[ "Cap", "Shirt", "Shoes", "Shorts" ]

Бихме могли да направим същото за color поле.

db.products.distinct(
    "product.color"
)

Резултат:

[ "Brown", "Green", "Purple", "White" ]

Вземете различни стойности от масив

Ето как да използвате distinct() метод за получаване на отделните стойности от горния масив.

db.products.distinct( "sizes" )

Резултат:

[ "L", "M", "S", "XL", "XS" ]

Използвайте distinct() със заявка

Можете да предоставите заявка, за да посочите документите, от които да извлечете отделните стойности. За да направите това, добавете заявката след полето.

Пример:

db.products.distinct( "product.name", { sizes: "S" } )

Резултат:

[ "Shirt", "Shoes", "Shorts" ]

Повече информация

db.collection.distinct() методът също така приема collation параметър, който ви позволява да зададете специфични за езика правила за сравнение на низове, като правила за главни букви и знаци за ударение.

Вижте документацията на MongoDB за повече информация.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Вътрешен масив за сортиране на Mongodb

  2. Контролен списък за сигурност за производствени внедрявания на MongoDB

  3. Вземете стойности като масив от елементи след $lookup

  4. MongoDB - Създаване на връзка

  5. $unset е празен. Трябва да посочите поле така:{$unset:{<field>:...}}