Автор оригинала: David Wong.
Примечания по обучению MongoDB (3) – Команда общего запроса оболочки Mongo
Версия MongoDB, используемая в этой статье, – 4.0.10
> db.version(); 4.0.10
1. Найти команду для краткого запроса
Find (query condition, field returned)
1. Возвращайте все поля при запросе
Бд. пользователь. найти () – > Запросить все данные в коллекции пользователей
> db.user.find()
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086" }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30 }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }Бд. пользователь. найти ({“имя пользователя”: “Мэри”}) – > Список данных для
> db.user.find({"username": "Mary"})
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30 }Бд. пользователь. найти ({“возраст”: 50}) – > Перечисляет данные
> db.user.find( {"age":50} )
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }2. При запросе возвращается только несколько полей.
Бд. пользователь. найти ({}, {“имя пользователя”: 1}) > Содержит список полей имени пользователя для всех пользователей
> db.user.find({}, {"username": 1})
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom" }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary" }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin" }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart" }Бд. пользователь. найти ({}, {“тел”: 1}) – > Перечисляет поля Тел для всех людей
> db.user.find({}, {"tel": 1})
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "tel" : "10086" }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7") }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8") }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9") }Бд. пользователь. найти ({}, {возраст”: 0}) – > Перечислены все поля, кроме поля возраст.
> db.user.find({}, {"age": 0})
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "tel" : "10086" }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary" }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin" }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart" }II. Общие операторы
1. $lt (<)
Запрашивать пользователей моложе 30 лет
> db.user.find( {"age": { $lt: 30 } } )
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086" }2. $lte (<=)
Запрашивайте пользователей моложе 30 лет или старше
> db.user.find( {"age": { $lte: 30 } } )
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086" }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30 }3. $gt (>)
Запрашивайте пользователей старше 30 лет
> db.user.find( {"age": { $gt: 30 } } )
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }4. $gte (>= )
Запрашивайте пользователей старше или равных 30
> db.user.find( {"age": { $gte: 30 } } )
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30 }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }5. $ne ( <> )
Пользователи, возраст запроса которых не равен 30 годам
> db.user.find( {"age": { $ne: 30 } } )
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086" }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }6. $и (И)
Запрашивайте пользователей старше 10 и моложе 40 лет
> db.user.find( { $and: [ { "age": { $lt: 40 } } , {"age": { $gt: 10 } } ] } )
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086" }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30, "tel" : null }7. $или (ИЛИ)
Запрашивайте пользователей моложе 20 лет и старше
> db.user.find( { $or: [ { "age": { $lt: 20 } } , {"age": { $gt:40 } } ] } )
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086" }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }8. $в (В)
Запрашивайте Пользователей В возрасте 20, 30, 40 лет
> db.user.find( { "age" : { $in : [20, 30, 40] } } )
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30 }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40 }9. $нет (НЕ)
Пользователи не старше 20, 40 лет ($нет)
> db.user.find( { "age" : { $not: { $in : [20, 40] } } } )
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086" }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }10. $nin (НЕ ВХОДИТ)
Запросы пользователей в возрасте 20, 40 лет
> db.user.find( { "age" : { $nin : [20, 40] } } )
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086" }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }11. $mod
Пользователи Возраста запроса на 4 года, Оставшиеся 2
> db.user.find( {"age" : { $mod : [4, 2] } } )
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }12. $существует
Существует используется для определения того, является ли ключ
Добавьте в Мэри поле Tel со значением null
> db.user.update({ "username": "Mary" }, { $set : { "tel" : null } })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.user.find()
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086" }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30, "tel" : null }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }Список записей с Поля тел.
> db.user.find({ "tel" : { $exists : 1 }})
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086" }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30, "tel" : null }Оценивая null, мы должны обратить внимание на: db.user.find({ "друзья": null }) Эта команда находит не только записи со значениями null, но и записи, которые не существуют с ключом friends.
> db.user.find({ "tel" : null })
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30, "tel" : null }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }Если вы хотите удалить ключ друзей, который существует и имеет нулевое значение, вам следует это сделать:
> db.user.find( { $and: [ { "tel" : null }, { "tel" : {$exists: 1 } } ] } )
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30, "tel" : null }13. $ где
Где: Определите, возвращаются ли данные на основе возвращаемого значения функции
вытащить Возраст * 3 + 5 менее 100 лет Пользователь
db.user.find( { $where : function(){
return (this.age * 3 + 5 < 100);
} } );> db.user.find( { $where : function(){ return (this.age * 3 + 5 < 100); } } );
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086" }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30, "tel" : null }это Представляет текущую запись.
С помощью этого $where вы можете реализовать практически любой тип запроса. Но не используйте этот метод до тех пор, пока в этом нет необходимости, потому что он намного медленнее, чем обычные запросы.
3. Используйте регулярные запросы
Найдите запись с надписью “искусство” в названии
> db.user.find( { "username" : /art/ } )
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }Найдите записи, которые начинаются с имени “mar” и не учитывают регистр
> db.user.find( {"username": /^mar/i } );
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30, "tel" : null }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40 }Массив запросов
1. $все: При определении нескольких заданных значений, содержащихся в поле типа массива.
Добавьте несколько друзей к пользователям в коллекцию пользователей, и результаты будут следующими:
> db.user.find()
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086", "friend" : [ "Mary", "Jocker", "Martin", "Kart" ] }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30, "tel" : null, "friend" : [ "Jocker", "Martin" ] }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40, "friend" : [ "Mary", "Jocker", "Kart" ] }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }Удалите записи Мэри и Джокера из массива друзей
> db.user.find({ "friend": { $all : ["Mary", "Jocker"] } })
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086", "friend" : [ "Mary", "Jocker", "Martin", "Kart" ] }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40, "friend" : [ "Mary", "Jocker", "Kart" ] }2. размер $: Массив запросов с заданным количеством элементов
Удалите записи с тремя значениями в массиве друзей
> db.user.find( { "friend" : { $size : 3 } } )
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40, "friend" : [ "Mary", "Jocker", "Kart" ] }3. $slice: Возвращает подмножество массива
{$срез: 10} – > 10 лучших в массиве {$срез: -10} – > последние 10 в массиве {$срез: [20, 10]} – > Начните с элемента, подписанного на 20 в массиве, и удалите 10 элементов в обратном порядке
Уберите первых трех друзей Тома
> db.user.find( {"username": "Tom"}, { "friend" : {$slice : 3} } )
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086", "friend" : [ "Mary", "Jocker", "Martin" ] }5. Поиск встроенных документов
1. $Сопоставление элементов
Если такая структура данных существует: Существует поле комментариев, представляющее собой массив, каждый из которых является встроенным объектом комментариев.
{
"_id": ObjectId("5d31b1d24fd0d7ad0a1a1361"),
"author": "Tom",
"content": "I am Tom!",
"comments": [{
"user": "Mary",
"score": 3,
"comment": "Nice!"
}, {
"user": "Martin",
"score": 6,
"comment": "I'm reading..."
}, {
"user": "Jocker",
"score": 8,
"comment": "You're kidding me"
}]
}
{
"_id": ObjectId("5d31b3114fd0d7ad0a1a1364"),
"author": "Martin",
"content": "I am Martin!",
"comments": [{
"user": "Tom",
"score": 5,
"comment": "Nice!"
}, {
"user": "Mary",
"score": 6,
"comment": "I'm reading..."
}, {
"user": "Jocker",
"score": 3,
"comment": "You're kidding me"
}]
}
{
"_id": ObjectId("5d31b3314fd0d7ad0a1a1365"),
"author": "Mary",
"content": "I am Mary!",
"comments": [{
"user": "Tom",
"score": 3,
"comment": "Nice!"
}, {
"user": "Martin",
"score": 5,
"comment": "I'm reading..."
}, {
"user": "Jocker",
"score": 2,
"comment": "You're kidding me"
}]
}Комментарии к запросу включают статьи с оценкой более 5
> db.blog.find ({ "comments" : { "$elemMatch" : { "score" : {"$gt" : 5}}} })
{ "_id" : ObjectId("5d31b1d24fd0d7ad0a1a1361"), "author" : "Tom", "content" : "I am Tom!", "comments" : [ { "user" : "Mary", "score" : 3, "comment" : "Nice!" }, { "user" : "Martin", "score" : 6, "comment" : "I'm reading..." }, { "user" : "Jocker", "score" : 8, "comment" : "You're kidding me" } ] }
{ "_id" : ObjectId("5d31b3114fd0d7ad0a1a1364"), "author" : "Martin", "content" : "I am Martin!", "comments" : [ { "user" : "Tom", "score" : 5, "comment" : "Nice!" }, { "user" : "Mary", "score" : 6, "comment" : "I'm reading..." }, { "user" : "Jocker", "score" : 3, "comment" : "You're kidding me" } ] }Записи комментариев с оценкой более 5 в комментариях к статьям Тома
> db.blog.find ({"author": "Tom"}, { "comments" : { "$elemMatch" : { "score" : {"$gt" : 3}}} })
{ "_id" : ObjectId("5d31b1d24fd0d7ad0a1a1361"), "comments" : [ { "user" : "Martin", "score" : 6, "comment" : "I'm reading..." } ] }Оригинал: “https://developpaper.com/mongodb-learning-notes-3-mongo-shell-common-query-command/”