кодесурса
«MongoDB

MongoDB: метод db.collection.distinct ()

script1adsense2code
script1adsense3code

db.collection.dataSize

Метод db.collection.distinct () используется для поиска отдельных значений для указанного поля в одной коллекции и возвращает результаты в массиве.

Синтаксис:

 db.collection.distinct (поле, запрос)

Параметры:

название Описание Необходимые /
Необязательный
Тип
поле Поле, для которого возвращаются различные значения. необходимые строка
запрос Запрос, который определяет документы, из которых можно получить различные значения. необходимые документ

Образец документа в коллекции ресторанов:


{
  "address": {
     "building": "1007",
     "coord": [ -73.856077, 40.848447 ],
     "street": "Morris Park Ave",
     "zipcode": "10462"
  },
  "borough": "Bronx",
  "cuisine": "Bakery",
  "grades": [
     { "date": { "$date": 1393804800000 }, "grade": "A", "score": 2 },
     { "date": { "$date": 1378857600000 }, "grade": "A", "score": 6 },
     { "date": { "$date": 1358985600000 }, "grade": "A", "score": 10 },
     { "date": { "$date": 1322006400000 }, "grade": "A", "score": 9 },
     { "date": { "$date": 1299715200000 }, "grade": "B", "score": 14 }
  ],
  "name": "Morris Park Bake Shop",
  "restaurant_id": "30075445"
}
............

Пример: вернуть отличительные значения для поля

В следующем примере возвращаются отличительные значения для поля кухни из всех документов в коллекции ресторанов:

db.restaurants.distinct( "cuisine" );

Выход:

Метод возвращает следующий массив различных значений кухни:

 [
        «Ирландский»,
        «Пекарня»,
        "Американец",
        «гамбургеры»,
        «Еврейская / кошерная»,
        "Гастроном",
        "Мороженое, Джелато, Йогурт, Льды",
        "Китайский язык",
        "Другой",
        "Курица",
        "Турецкий",
        "Caribbean",
        «Пончики»,
        "Бутерброды / Салаты / Шведский стол",
        «бублики / крендели»,
        "Пицца",
        «Итальянская»,
        «Стейк»,
        "Continental",
        "Латиница (кубинская, доминиканская, пуэрториканская, южная и центральноамериканская)",
        "Польский",
        "Немецкий",
        "Французский",
        «Пицца / итальянская»,
        «Мексиканский»,
        "Испанский",
        «Кафе / кофе / чай»,
        "Tex-Mex",
        «Блины / Вафли»,
        "Пища для души",
        "Морепродукты",
        "Хот-доги",
        «Греческий»,
        «Не указано / не применимо»,
        «Африканский»,
        "Японский язык",
        «Индийский»,
        «Армянский»,
        «Тайский»,
        «Китайский / кубинская»,
        «Средиземноморская»,
        "Корейский язык",
        «Напитки в бутылках, включая воду, газированные напитки, соки и т. Д.»,
        "Русский",
        "Восточноевропейский",
        "Ближневосточный",
        «Азиатский»,
        «Эфиопский»,
        «Вегетарианская»,
        "Барбекю",
        «Египетский»,
        "Английский",
        «Бутерброды»,
        "Португальский",
        "Индонезийский",
        «Китайский / японский»,
        «Филиппинский»,
        "Сок, смузи, фруктовые салаты",
        «Бразильская»,
        «Афганец»,
        «Вьетнамский / камбоджийской / Малайзия»,
        "Каф © / кофе / чай",
        "Супы и бутерброды",
        «Тапас»,
        «Марокканский»,
        «Пакистанские»,
        «Перуанский»,
        «Бангладешских»,
        "Чешский язык",
        «Салаты»,
        "Creole",
        «Фрукты / Овощи»,
        «Иранская»,
        "Cajun",
        «Скандинавский»,
        «Полинезийском»,
        «Супы»,
        «Австралийский»,
        «Сосиски / крендели»,
        «Юго-Западный»,
        «Орехи / Кондитерская»,
        «Гавайская»,
        "Creole / Cajun",
        «Калифорнийский»,
        «Чилийский»
]

Пример: возврат отличительных значений для встроенного поля

В следующем примере возвращаются отдельные значения для поля почтового индекса, встроенного в поле адреса, из всех документов в коллекции ресторанов:

db.restaurants.distinct( "address.zipcode" );

Выход:

Метод возвращает следующий массив различных значений почтового индекса:

 [
        "10019",
        "10462",
        "11224",
        "11225",
        "11374",
        "11369",
        "11219",
        "11234",
        "10460",
        "11226",
        "11214",
        "11208",
        "10065",
        "11223",
        "11414",
        "11218",
        "11004",
        "11209",
        "11215",
        "10021",
        "11356",
        "10314",
        "10003",
        "11106",
        "10024",
        "10025",
        "10012",
        "10005",
        "11368",
        "11203",
        "11205",
        "10466",
        "10007",
        "11201",
        "10018",
        "10474",
        "10174",
        "11418",
        "11379",
        "10016",
        "10022",
        "11236",
        "11385",
        "11212",
        "10023",
        "11230",
        "11371",
        "10306",
        "10458",
        "10308",
        "10038",
        "11211",
        "10028",
        "10017",
        "10465",
        "10014",
        "11222",
        "10013",
        "11101",
        "10009",
        "10305",
        "11235",
        "10011",
        "11363",
        "11232",
        "11103",
        "10309",
        "10032",
        "11228",
        "10036",
        "10033",
        "10451",
        "11372",
        "11366",
        "11204",
        "10312",
        "10001",
        "10467",
        "11435",
        "11432",
        "11001",
        "10302",
        "11229",
        "11694",
        "11420",
        "11697",
        "11367",
        "10463",
        "11375",
        "10006",
        "10452",
        "11427",
        "10475",
        "11373",
        "10310",
        "10304",
        "11238",
        "10010",
        "11105",
        "11377",
        "10034",
        "11360",
        "11415",
        "11416",
        "10470",
        "11354",
        "10301",
        "10002",
        "11361",
        "11358",
        "11213",
        "10128",
        "10464",
        "10004",
        "11239",
        "11104",
        "11231",
        "10075",
        "11364",
        "11237",
        "11249",
        "11362",
        "11357",
        "10303",
        "11434",
        "10472",
        "11220",
        "11378",
        "10461",
        "11417",
        "10027",
        "11365",
        "11413",
        "10029",
        "10459",
        "11421",
        "10468",
        "11217",
        "11216",
        "10456",
        "11423",
        "11207",
        "11355",
        "10469",
        "11206",
        "10455",
        "10454",
        "11210",
        "10119",
        "10020",
        "10453",
        "11412",
        "11419",
        "11429",
        "11370",
        "10040",
        "11430",
        "11221",
        "11422",
        "11428",
        "11040",
        "11693",
        "11411",
        "10031",
        "11691",
        "10457",
        "11102",
        "10037",
        "10106",
        "10030",
        "10471",
        "10112",
        "11426",
        "10039",
        "10035",
        "11005",
        "10307",
        "11692",
        "10044",
        "10026",
        "10280",
        "11233",
        "10103",
        "10121",
        "10282",
        "10473",
        "10281",
        "11436",
        "10153",
        "11433",
        "10057",
        "11242",
        "10111",
        "10122",
        "10168",
        "10107",
        "10000",
        "11109",
        "10171",
        "11256",
        "10069",
        "10311",
        "11010",
        "11451",
        "07005",
        "10317",
        "10104",
        "",
        "10048",
        "10123",
        "11352",
        "10165",
        "10167"
]

Пример: укажите запрос с отличным

В следующем примере возвращаются отдельные значения для поля почтового индекса, встроенного в поле адреса, из документов, кухня которых равна «Деликатес»:

db.restaurants.distinct( "address.zipcode" , { "cuisine" : "Delicatessen" } );

Выход:

Метод возвращает следующий массив различных значений почтового индекса:

 [
        "11234",
        "11209",
        "11356",
        "10003",
        "11106",
        "10314",
        "11385",
        "10306",
        "10308",
        "10021",
        "10022",
        "10006",
        "10475",
        "10007",
        "10017",
        "10019",
        "11101",
        "11215",
        "10018",
        "10036",
        "11365",
        "10001",
        "10025",
        "11426",
        "11228",
        "11360",
        "10012",
        "11357",
        "11370",
        "10016",
        "10028",
        "10309",
        "11694",
        "10310",
        "11377",
        "10013",
        "10463",
        "11375",
        "10002",
        "11363",
        "11217",
        "11361",
        "10004",
        "10282",
        "11364",
        "10038",
        "11105",
        "10464",
        "11378",
        "10458",
        "11222",
        "11220",
        "10065",
        "11232",
        "11415",
        "11242",
        "11354",
        "11103",
        "10023",
        "10451",
        "10014",
        "11208",
        "10112",
        "11417",
        "10032",
        "11430",
        "11432",
        "10024",
        "10020",
        "11238",
        "10005",
        "10011",
        "11369",
        "10467",
        "11230",
        "11231",
        "10455",
        "10010",
        "11379",
        "11201",
        "11355",
        "11219",
        "11368",
        "10033",
        "11214",
        "11102",
        "10027",
        "10301",
        "10280",
        "11434",
        "11372",
        "10469",
        "11206",
        "10029",
        "11435",
        "10461",
        "10468",
        "10474",
        "11423",
        "10075",
        "11416",
        "10462",
        "10302",
        "11236",
        "10312",
        "11414",
        "11223",
        "10035",
        "11374",
        "11367",
        "10128",
        "11422",
        "10465",
        "11237",
        "11418",
        "10453",
        "11207"
]

Получить данные о ресторанах здесь

Поведение

Поля массива

Если значение указанного поля является массивом, db.collection.distinct () рассматривает каждый элемент массива как отдельное значение.

Например, если поле имеет значение [1, [1], 1], то db.collection.distinct () рассматривает 1, [1] и 1 как отдельные значения.

Использование индекса

Когда это возможно, операции db.collection.distinct () могут использовать индексы.

Индексы также могут охватывать операции db.collection.distinct ().

Предыдущий: метод db.collection.dataSize ()
Далее: метод db.collection.drop ()

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code