MongoDB: метод db.collection.distinct ()
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 программирования