MongoDB query advanced operation details (multi condition query regular matching query etc.)
- 2021-01-14 06:59:10
- OfStack
Advanced operations for MongoDB queries
Grammar is introduced
MongoDB queries documents using the find() method, while the find() method displays all the queried documents unstructured.
-- 1. The basic grammar
db.collection.find(query, projection) -- Returns all documents that match the query criteria
db.collection.findOne(query, projection) -- Returns the first 1 There are three documents that meet the query criteria
-- query : Optional, query condition operator, used to specify a query condition
-- projection : Optional, drop drop operator, which specifies the key to return (omitted by default)
-- case 1 Query: users The age in the set is zero 18 All documents of the
db.users.find({age: 18})
-- 2. If you need to view the data in a readable way, use pretty() methods
db.collection.find(query, projection).pretty()
AND conditions and OR conditions
The find() method of MongoDB can pass multiple keys, each separated by a comma, thus fulfilling the AND condition of SQL
-- 1.AND Conditional basic grammar
db.collection.find({key1:value1, key2:value2})
-- case 1 Query: users The age in the set is zero 18 All documentation for girls
db.users.find({age: 18, sex: 'girl'})
-- 2.OR Conditional basic grammar
db.collection.find({
$or: [
{key1: value1},
{key2:value2}
]
})
-- case 2 Query: users The age in the set is zero 18 Or all documents whose gender is female
db.users.find({
$or: [
{age: 18},
{sex: 'girl'}
]
})
Conditional operator
The conditional operator processes the conditional relationship to retrieve the qualified document data from MongoDB. The conditional operator is as follows:
More than: $gt Less than: $lt > or equal to: $gte Less than or equal to: $lte
-- The query users The age in the set is greater than 18 The age of the document data
db.users.find({age : {$gt : 18}})
-- The query users The age in the set is less than 18 The age of the document data
db.users.find({age : {$lt : 18}})
-- The query users The age in the set is greater than or equal to 18 The age of the document data
db.users.find({age : {$gte : 18}})
-- The query users The age in the set is greater than or equal to 18 The age of the document data
db.users.find({age : {$lte : 18}})
$type operators
The $type operator retrieves the matching data types in the collection based on the BSON type. The MongoDB operator retrieves the matching data types in the collection based on the BSON type.
类型 | $type代表数字 | 说明 |
---|---|---|
Double | 1 | 64位浮点数 |
String | 2 | 字符串类型 |
Object | 3 | 对象类型 |
Array | 4 | 数组类型 |
Binary Data | 5 | 2进制数据类型 |
Objectid | 7 | 对象id类型 |
Boolean | 8 | 布尔类型 |
Date | 9 | 日期类型 |
Null | 10 | 用于表示空值或不存在的字段 |
Regular Expression | 11 | 正则表达式类型 |
JavaScript | 13 | JavaScript代码 |
JavaScript (with scope) | 15 | 带作用域的JavaScript代码 |
32-bit integer | 16 | 32位整数 |
Timestamp | 17 | 时间戳类型 |
64-bit integer | 18 | 64位整数 |
Min key | -1 | 最小键 |
Max key | 127 | 最大键 |
Here I will use $type as an example of the query condition:
-- Example: query users Collection of documents whose names are of type string
db.users.find({"name" : {$type : 2}})
The ES49en (), ES50en (), ES51en () methods are used in the query
The limit() method reads a specified number of document data records based on the query criteria. The skip() method skips a specified amount of document data and then queries according to the query criteria. The sort() method sorts the queried document data in ascending or descending order according to the specified field. A field value of 1 refers to ascending order, and a field value of -1 refers to descending order. I'll use the limit() and skip() methods for examples below.
-- Use grammar ( limit() , skip() , sort() Methods can be used in combination.
db.collectionName.find().limit(NUMBER)
db.collectionName.find().skip(NUMBER)
db.collectionName.find().sort({"key": 1/-1})
-- case 1 Before: skip 50 Bar data query users The name field in the collection is of type string 100 Data within
db.users.find({"name" : {$type : 2}}).limit(100).skip(50)
-- case 2 : will be queried users The document data in the collection whose name field is of type string is sorted in ascending order
db.users.find({"name" : {$type : 2}}).sort({"name": 1})
Use regular expressions in queries
Here's a look at regular expressions: a regular expression is a string that describes and matches a series of strings that conform to a certain syntax rule.
MongoDB uses the $regex operator to set the regular expression language for matching strings.
-- Use the syntax
db.collectionName.find({key:{ $regex: regex, $options: options }})
-- Example: case-insensitive query users The name in the collection contains web Document data of ( The query results are the same in the following two ways )
db.users.find({ "name" : { $regex : "web", $options: "i" } })
db.users.find({ "name" : /web/i } })
conclusion