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

Примерни оператори на MongoDB

Условни оператори на MongoDB задайте условие, на което да съответства стойността на полето на документа.

Оператори на заявка за сравнение

  • $eq (равно)
  • $ne (не е равно)
  • $gt (повече от)
  • $lt (по-малко от)
  • $gte (повече или равни)
  • $lte (по-малко или равно)
  • $in дефинира масив от стойности, една от които трябва да има поле за документ
  • $nin дефинира масив от стойности, които не трябва да имат поле на документ

Например, ще намерим всички документи, които имат стойност на ключа за възраст под 30:

db.users.find ({age: {$lt : 30}})

Използването на други оператори за сравнение ще бъде подобно. Например същият ключ, само над 30:

db.users.find ({age: {$gt : 30}})

Обърнете внимание, че сравнението тук се прави върху цели числа, а не по низове. Ако възрастта на ключа представлява низови стойности, тогава сравнението трябва да се направи през редовете:db.users.find ({age:{$gt :“30”}}), но резултатът ще бъде същият.

Но нека си представим ситуация, в която трябва да намерим всички обеми със стойност на полето за възраст, по-голяма от 30, но по-малка от 50. В този случай можем да комбинираме два оператора:

db.users.find ({age: {$gt : 30, $lt: 50}})

Ще намерим потребители, чиято възраст е 22:

db.users.find ({age: {$eq : 22}})

По същество това е аналогията на следващата заявка:

db.users.find ({age: 22})

Обратна операция – намерете потребители, чиято възраст НЕ е 22:

db.users.find ({age: {$ne : 22}})

Операторът $in дефинира масив от възможни изрази и търси тези ключове, чиято стойност е в масива:

db.users.find ({age: {$in : [22, 32]}})

По обратния начин, операторът $nin дефинира масив от възможни изрази и търси тези ключове, чиято стойност липсва в този масив:

db.users.find ({age:{$nin :[22, 32]}})

Логически оператори

Логическите оператори се изпълняват при условия на извадка:

  • $или :свързва две условия и документът трябва да отговаря на едно от тези условия
  • $и: свързва две условия и документът трябва да отговаря на двете условия
  • $не: документът НЕ трябва да отговаря на условието
  • $nor: свързва две условия и документът НЕ трябва да отговаря на двете условия

Примерни оператори на MongoDB

Операторът $or представлява логическа операция ИЛИ и дефинира набор от двойки ключ-стойност, които трябва да присъстват в документа. И ако даден документ има поне една такава двойка ключ-стойност, той съответства на тази заявка и се извлича от базата данни:

db.users.find ({$or : [{name: "Tom"}, {age: 22}]})

Този израз ще върне всички документи с name=Tom или age=22.

Друг пример ще върне всички документи с name=Tom и age=22 или с „немски“ сред езиковите стойности:

db.users.find ({name: "Tom", $or : [{age: 22}, {languages: "german"}]})

Условните оператори могат да се използват в подизрази или подизрази:

db.users.find ({$or : [{name: "Tom"}, {age: {$gte:30}}]})

В този случай избираме всички документи, при които name=”Tom” или полето за възраст има стойност от 30 или по-висока.

Оператор $and

Операторът $and представлява логическа операция И (логическо умножение) и дефинира набор от критерии, на които трябва да отговаря даден документ. За разлика от оператора $or, документът трябва да отговаря на всички посочени критерии. Например:

db.users.find ({$and : [{name: "Tom"}, {age: 32}]})

Тук избраните документи трябва да имат името Том и възраст 32 – и двете функции.

Търсене в MongoDB масив

Някои оператори са проектирани да работят с масиви:

  • $all: дефинира набор от стойности, които трябва да съществуват в масив
  • $size: дефинира броя на елементите, които трябва да бъдат в масив
  • $elemMatch: определя условието, на което трябва да отговарят елементите в масива

MongoDB $all

Операторът $all дефинира масив от възможни изрази и изисква документите да имат целия дефиниран набор от изрази. Съответно се използва за търсене в масива. Например, документите имат масив от езици, който съхранява чуждите езици, говорени от потребителя. И за да намерим всички хора, които говорят и английски, и френски едновременно, можем да използваме следния израз:

db.users.find ({languages: {$all : ["english", "french"]}})

Оператор $elemMatch

Операторът $elemMatch ви позволява да избирате документи, в които масивите съдържат елементи, които попадат при определени условия. Например, оставете базата данни да съдържа колекция от потребителски оценки за конкретни курсове. Нека добавим няколко документа:

db.grades.insertMany([{student: "Tom", courses:[{name: "Java", grade: 5}, {name: "MongoDB", grade: 4}]},
{student: "Alice", courses:[{name: "C++", grade: 3}, {name: "MongoDB", grade: 5}]}))

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

Сега ще намерим студенти, които имат оценка над 3 за курса по MongoDB:

db.grades.find({courses: {$elemMatch: {name: "MongoDB", grade: {$gt: 3}}}})

Оператор $size

Операторът $size се използва за намиране на документи, в които масивите имат брой елементи, равни на стойността на $size. Например, нека извлечем всички документи, където има два елемента в масива laguages:

db.users.find ({languages: {$size:2}})

Такава заявка ще съответства например на следния документ:

{"name": "Tom", "age": 32, languages: ["english", "german"]}

Оператор $ съществува

Операторът $exists позволява да се извличат само онези документи, в които има или липсва определен ключ. Например върнете всички документи, които съдържат фирмения ключ:

db.users.find ({company: {$exists:true}})

Ако посочим $exists като параметър false, заявката ще ни върне само онези документи, които не съдържат фирмения ключ.

Оператор $type

Операторът $type извлича само онези документи, в които определен ключ има стойност от определен тип, например низ или число:

db.users.find ({age: {$type: "string"}})
> db.users.find ({age: {$type: "number"}})

Оператор $regex

Операторът $regex посочва регулярен израз, на който трябва да съответства стойността на полето . Например, нека името на полето задължително има буквата „b“:

db.users.find ({name: {$regex: "b"}})

Важно е да се разбере, че $regex не приема само низове, а регулярни изрази, например:name:{$regex:“om$”} – стойността на name трябва да завършва с “om”.

Урок за MongoDB:Оператори на заявка за масив ($all, $elemMatch, $size)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Какво е обединяване на връзки и изчакване?

  2. Отдалечено свързване към MongoDB http интерфейс на EC2 сървър

  3. използва за времето за създаване на mongodb ObjectId

  4. MongoDB сравнява дати само без времена

  5. Как да вмъкнете няколко елемента наведнъж в колекция MongoDB