Toán tử truy vấn MongoDB bao gồm các toán tử so sánh, lôgic, phần tử, đánh giá, không gian địa lý, mảng, bitwise và nhận xét.
Các bài viết liên quan:
Toán tử so sánh MongoDB
- $ eq
$ Eq chỉ định điều kiện bằng nhau. Nó khớp với các tài liệu trong đó giá trị của một trường bằng giá trị được chỉ định.
Cú pháp:
{ <field> : { $eq: <value> } }
Ví dụ:
db.books.find ({price: {$ eq: 300}})
Ví dụ trên truy vấn bộ sưu tập sách để chọn tất cả các tài liệu có giá trị của giá được nộp bằng 300.
- $ gt
$ Gt chọn một tài liệu có giá trị của trường lớn hơn giá trị được chỉ định.
Cú pháp:
{ field: { $gt: value } }
Ví dụ:
db.books.find ( { price: { $gt: 200 } } )
- $ gte
$ Gte chọn các tài liệu có giá trị trường lớn hơn hoặc bằng một giá trị được chỉ định.
Cú pháp:
{ field: { $gte: value } }
Ví dụ:
db.books.find ( { price: { $gte: 250 } } )
- $ in
Toán tử $ in chọn các tài liệu trong đó giá trị của một trường bằng bất kỳ giá trị nào trong mảng được chỉ định.
Cú pháp:
{ filed: { $in: [ <value1>, <value2>, ……] } }
Ví dụ:
db.books.find( { price: { $in: [100, 200] } } )
- $ lt
Toán tử $ lt chọn các tài liệu có giá trị của trường nhỏ hơn giá trị được chỉ định.
Cú pháp:
{ field: { $lt: value } }
Ví dụ:
db.books.find ( { price: { $lt: 20 } } )
- $ lte
Toán tử $ lte chọn các tài liệu có giá trị trường nhỏ hơn hoặc bằng một giá trị được chỉ định.
Cú pháp:
{ field: { $lte: value } }
Ví dụ:
db.books.find ({price: {$ lte: 250}})
- $ ne
Toán tử $ ne chọn tài liệu mà giá trị trường không bằng giá trị đã chỉ định.
Cú pháp:
{<field>: {$ ne: <value>}}
Ví dụ:
db.books.find ({price: {$ ne: 500}})
- $ nin
Toán tử $ nin chọn tài liệu mà giá trị trường không nằm trong mảng được chỉ định hoặc không tồn tại.
Cú pháp:
{ field : { $nin: [ <value1>, <value2>, .... ] } }
Ví dụ:
db.books.find ({price: {$ nin: [50, 150, 200]}})
Toán tử logic MongoDB
- $ and
Toán tử $ và hoạt động như một phép toán hợp lý AND trên một mảng. Mảng phải có một hoặc nhiều biểu thức và chọn các tài liệu thỏa mãn tất cả các biểu thức trong mảng.
Cú pháp:
{$ and: [{<exp1>}, {<exp2>}, ....]}
Ví dụ:
db.books.find ({$ và: [{price: {$ ne: 500}}, {price: {$ being: true}}]})
- $ not
Toán tử $ not hoạt động như một KHÔNG logic trên biểu thức được chỉ định và chọn các tài liệu không liên quan đến biểu thức.
Cú pháp:
{ field: { $not: { <operator-expression> } } }
Ví dụ:
db.books.find ({price: {$ not: {$ gt: 200}}})
- $ nor
Toán tử $ nor hoạt động dưới dạng NOR logic trên một mảng của một hoặc nhiều biểu thức truy vấn và chọn tài liệu không thành công với tất cả biểu thức truy vấn trong mảng.
Cú pháp:
{$ nor: [{<expression1>}, {<expresion2>}, .....]}
Ví dụ:
db.books.find ({$ nor: [{price: 200}, {sale: true}]})
- $ or
Nó hoạt động như một phép toán HOẶC logic trên một mảng gồm hai hoặc nhiều biểu thức và chọn các tài liệu đáp ứng mong đợi ít nhất một trong các biểu thức.
Cú pháp:
{ $or: [ { <exp_1> }, { <exp_2> }, ... , { <exp_n> } ] }
Ví dụ:
db.books.find ( { $or: [ { quantity: { $lt: 200 } }, { price: 500 } ] } )
Toán tử phần tử MongoDB
- $ exists
Toán tử tồn tại khớp với các tài liệu chứa trường khi Boolean là true. Nó cũng khớp với tài liệu có giá trị trường là null.
Cú pháp:
{field: {$ being: <boolean>}}
Ví dụ:
db.books.find ({qty: {$ being: true, $ nin: [5, 15]}})
- $ type
Toán tử kiểu chọn tài liệu trong đó giá trị của trường là một thể hiện của kiểu BSON được chỉ định.
Cú pháp:
{ field: { $type: <BSON type> } }
Ví dụ:
db.books.find ({"bookid": {$ type: 2}});
Toán tử đánh giá MongoDB
- $ expr
Toán tử expr cho phép sử dụng các biểu thức tổng hợp trong ngôn ngữ truy vấn.
Cú pháp:
{$ expr: {<expression>}}
Ví dụ:
db.store.find ({$ expr: {$ gt: ["$ product", "price"]}})
- $ jsonSchema
Nó khớp với các tài liệu đáp ứng Lược đồ JSON được chỉ định.
Cú pháp:
{ $jsonSchema: <JSON schema object> }
- $ mod
Toán tử mod chọn tài liệu mà giá trị của một trường được chia cho một số chia có phần dư được chỉ định.
Cú pháp:
{ field: { $mod: [ divisor, remainder ] } }
Ví dụ:
db.books.find ({qty: {$ mod: [200, 0]}})
- $ regex
Nó cung cấp khả năng biểu thức chính quy cho các chuỗi đối sánh mẫu trong các truy vấn. MongoDB sử dụng các biểu thức chính quy tương thích với Perl.
Cú pháp:
{<field>: / pattern / <options>}
Ví dụ:
db.books.find ({price: {$ regex: / 789 $ /}})
- $ text
Toán tử $ text tìm kiếm một văn bản trên nội dung của trường, được lập chỉ mục bằng chỉ mục văn bản.
Cú pháp:
{ $text: { $search: <string>, $language: <string>, $caseSensitive: <boolean>, $diacriticSensitive: <boolean> } }
Ví dụ:
db.books.find ({$ text: {$ search: "Othelo"}})
- $ where
Toán tử “where” là để chuyển một chuỗi chứa một biểu thức JavaScript hoặc một hàm JavaScript đầy đủ vào hệ thống truy vấn.
Ví dụ:
db.books.find( { $where: function() { return (hex_md5(this.name)== "9b53e667f30cd329dca1ec9e6a8") } } );
Toán tử không gian địa lý MongoDB
- $ geoIntersects
Nó chỉ chọn những tài liệu có dữ liệu không gian địa lý giao nhau với đối tượng GeoJSON đã cho.
Cú pháp:
{ <location field>: { $geoIntersects: { $geometry: { type: "<object type>" , coordinates: [ <coordinates> ] } } } }
Ví dụ:
db.places.find( { loc: { $geoIntersects: { $geometry: { type: "Triangle" , coordinates: [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ] ] ] } } } }
- $ geoWithin
Toán tử geoWithin chọn tài liệu có dữ liệu không gian địa lý tồn tại hoàn toàn trong một hình dạng cụ thể.
Cú pháp:
{ <location field>: { $geoWithin: { $geometry: { type: <"Triangle" or "Rectangle"> , coordinates: [ <coordinates> ] } } }
- $ near
Toán tử gần xác định một điểm mà tại đó truy vấn không gian địa lý trả về các tài liệu từ gần đến xa.
Cú pháp:
{ <location field>: { $near: { $geometry: { type: "Point" , coordinates: [ <longitude> , <latitude> ] }, $maxDistance: <distance in meters>, $minDistance: <distance in meters> } }
Ví dụ:
db.places.find( { location: { $near : { $geometry: { type: "Point", coordinates: [ -73.9667, 40.78 ] }, $minDistance: 1000, $maxDistance: 5000 } } }
- $ nearSphere
Toán tử nearsphere chỉ định một điểm mà truy vấn không gian địa lý trả về tài liệu từ gần nhất đến xa nhất.
Cú pháp:
{ $nearSphere: [ <x>, <y> ], $minDistance: <distance in radians>, $maxDistance: <distance in radians> }
Ví dụ:
db.legacyPlaces.find( { location : { $nearSphere : [ -73.9667, 40.78 ], $maxDistance: 0.10 } } )
- $ all
Nó chọn tài liệu mà giá trị của một trường là một mảng chứa tất cả các phần tử được chỉ định.
Cú pháp:
{<field>: {$ all: [<value1>, <value2> ...]}}
Ví dụ:
db.books.find ({tags: {$ all: ["Java", "MongoDB", "RDBMS"]}})
- $ elemMatch
Toán tử liên hệ các tài liệu chứa trường mảng với ít nhất một phần tử phù hợp với tất cả các tiêu chí truy vấn đã cho.
Cú pháp:
{<field>: {$ elemMatch: {<query1>, <query2>, ...}}}
Ví dụ:
db.books.find( { results: { $elemMatch: { $gte: 500, $lt: 400 } } } )
- $size
Nó chọn bất kỳ mảng nào có số phần tử được chỉ định bởi đối số.
Cú pháp:
db.collection.find( { field: { $size: 2 } } );
Toán tử MongoDB Bitwise
- $ bitsAllClear
Nó khớp với các tài liệu trong đó tất cả các vị trí bit được cung cấp bởi truy vấn là nội địa rõ ràng.
Cú pháp:
{ <field>: { $bitsAllClear: <numeric bitmask> } }
Ví dụ:
db.inventory.find ({a: {$ bitsAllClear: [1, 5]}})
- $ bitsAllSet
Toán tử bitallset khớp với các tài liệu trong đó tất cả các vị trí bit được cung cấp bởi truy vấn được đặt trong trường.
Cú pháp:
{ <field>: { $bitsAllSet: <numeric bitmask> } }
Ví dụ:
db.inventory.find ({a: {$ bitsAllClear: [1, 5]}})
- $ bitsAnyClear
Toán tử bitAnyClear khớp với tài liệu trong đó bất kỳ vị trí bit nào được cung cấp bởi truy vấn đều rõ ràng trong trường.
Cú pháp:
{ <field>: { $bitsAnyClear: <numeric bitmask> } }
Ví dụ:
db.inventory.find ({a: {$ bitsAnyClear: [5, 10]}})
- $ bitsAnySet
Nó khớp với tài liệu nơi bất kỳ vị trí bit nào được cung cấp bởi truy vấn được đặt trong trường.
Cú pháp:
{ <field>: { $bitsAnySet: <numeric bitmask> } }
Ví dụ:
db.inventory.find ({a: {$ bitsAnySet: [1, 5]}})
Toán tử comment MongoDB
- $ comment
Toán tử $ comment liên kết một nhận xét với bất kỳ biểu thức nào sử dụng một vị từ truy vấn.
Cú pháp:
db.inventory.find ({<query>, $ comment: <comment>})
Ví dụ:
db.inventory.find( { x: { $mod: [ 1, 0 ] }, $comment: "Find Odd values." }
Toán tử chiếu MongoDB
- $
Toán tử $ giới hạn nội dung của một mảng từ kết quả truy vấn để chỉ chứa phần tử đầu tiên phù hợp với tài liệu truy vấn.
Cú pháp:
db.books.find( { <array>: <value> ... }, { "<array>.$": 1 } ) db.books.find( { <array.field>: <value> ...}, { "<array>.$": 1 } )
- $ elemMatch
Nội dung của trường mảng được giới hạn bằng cách sử dụng toán tử này từ kết quả truy vấn để chỉ chứa phần tử đầu tiên phù hợp với phần tử $ elemMatch điều kiện.
Cú pháp:
db.library.find( { bookcode: "63109" }, { students: { $elemMatch: { roll: 102 } } } )
- $ meta
Toán tử meta trả về kết quả cho mỗi tài liệu phù hợp có siêu dữ liệu được liên kết với truy vấn.
Cú pháp:
{ $meta: <metaDataKeyword> }
Ví dụ:
db.books.find( <query>, { score: { $meta: "textScore" } }
- $ slice
Nó kiểm soát số lượng giá trị trong một mảng mà một truy vấn trả về.
Cú pháp:
db.books.find ({field: value}, {array: {$ slice: count}});
Ví dụ:
db.books.find ({}, {nhận xét: {$ slice: [200, 100]}})