《MongoDB入门教程》第08篇 比较运算符
本文將會(huì)介紹 MongoDB 中查找文檔時(shí)常用的一些比較運(yùn)算符,包括 $eq、$gt、$gte、$lt、$lte、$ne、$in 以及 $nin。
$eq 運(yùn)算符
$eq 運(yùn)算符用于匹配字段等于(=)指定值的文檔。$eq 運(yùn)算符的語(yǔ)法如下:
{ <field>: { $eq: <value> } }以上語(yǔ)法等價(jià)于下面的寫(xiě)法:
{<field>: <value>}我們創(chuàng)建一個(gè)集合 products 作為下文中的演示:
db.products.insertMany([{ "_id" : 1, "name" : "xPhone", "price" : 799, "releaseDate": ISODate("2011-05-14"), "spec" : { "ram" : 4, "screen" : 6.5, "cpu" : 2.66 },"color":["white","black"],"storage":[64,128,256]},{ "_id" : 2, "name" : "xTablet", "price" : 899, "releaseDate": ISODate("2011-09-01") , "spec" : { "ram" : 16, "screen" : 9.5, "cpu" : 3.66 },"color":["white","black","purple"],"storage":[128,256,512]},{ "_id" : 3, "name" : "SmartTablet", "price" : 899, "releaseDate": ISODate("2015-01-14"), "spec" : { "ram" : 12, "screen" : 9.7, "cpu" : 3.66 },"color":["blue"],"storage":[16,64,128]},{ "_id" : 4, "name" : "SmartPad", "price" : 699, "releaseDate": ISODate("2020-05-14"),"spec" : { "ram" : 8, "screen" : 9.7, "cpu" : 1.66 },"color":["white","orange","gold","gray"],"storage":[128,256,1024]},{ "_id" : 5, "name" : "SmartPhone", "price" : 599,"releaseDate": ISODate("2022-09-14"), "spec" : { "ram" : 4, "screen" : 9.7, "cpu" : 1.66 },"color":["white","orange","gold","gray"],"storage":[128,256]}])以下示例使用 $eq 運(yùn)算符查找 products 集合中 price 字段等于 899 的所有文檔:
db.products.find({price: {$eq: 899} }, {name: 1,price: 1 })我們也可以使用以下等價(jià)寫(xiě)法:
db.products.find({price: 899 }, {name: 1,price: 1 })以上兩個(gè)示例的返回結(jié)果相同:
[{ _id: 2, name: 'xTablet', price: 899 },{ _id: 3, name: 'SmartTablet', price: 899 } ]下面的示例使用 $eq 運(yùn)算符查找嵌套文檔 spec 中字段 ram 的值等于 4 的文檔:
db.products.find({"spec.ram": {$eq: 4} }, {name: 1,"spec.ram": 1 })查詢返回的文檔如下:
[{ _id: 1, name: 'xPhone', spec: { ram: 4 } },{ _id: 5, name: 'SmartPhone', spec: { ram: 4 } } ]接下來(lái)的示例使用 $eq 運(yùn)算符查找 products 集合中數(shù)組 color 包含“black”元素的文檔:
db.products.find({color: {$eq: "black"} }, {name: 1,color: 1 })查詢返回的文檔如下:
[{ _id: 1, name: 'xPhone', color: [ 'white', 'black' ] },{ _id: 2, name: 'xTablet', color: [ 'white', 'black', 'purple' ] } ]$gt 運(yùn)算符
$gt 運(yùn)算符用于匹配字段大于(>)指定值的文檔。$gt 運(yùn)算符的語(yǔ)法如下:
{ field: { $gt: value}}以下示例使用 $gt 運(yùn)算符查找集合 products 中 price 大于 699 的文檔:
db.products.find({price: {$gt: 699} }, {name: 1,price: 1 })查詢返回的結(jié)果如下:
[{ _id: 1, name: 'xPhone', price: 799 },{ _id: 2, name: 'xTablet', price: 899 },{ _id: 3, name: 'SmartTablet', price: 899 } ]$gte 運(yùn)算符
$gte 運(yùn)算符用于匹配字段大于等于(>=)指定值的文檔。$gte 運(yùn)算符的語(yǔ)法如下:
{field: {$gte: value} }以下示例使用 $gte 運(yùn)算符查找集合 products 中嵌入文檔 spec 的字段 screen 大于或者等于 9.5 的文檔:
db.products.find({"spec.screen": {$gte: 9.5} }, {name: 1,"spec.screen": 1 })返回結(jié)果如下:
[{ _id: 2, name: 'xTablet', spec: { screen: 9.5 } },{ _id: 3, name: 'SmartTablet', spec: { screen: 9.7 } },{ _id: 4, name: 'SmartPad', spec: { screen: 9.7 } },{ _id: 5, name: 'SmartPhone', spec: { screen: 9.7 } } ]$lt 運(yùn)算符
$lt 運(yùn)算符用于匹配字段小于(<)指定值的文檔。$lt 運(yùn)算符的語(yǔ)法如下:
{field: {$lt: value} }以下示例使用 $lt 運(yùn)算符查找集合 products 中數(shù)組字段 storage 至少包含一個(gè)小于 128 的元素的文檔:
db.products.find({storage: {$lt: 128} }, {name: 1,storage: 1 })查詢返回的文檔如下:
[{ _id: 1, name: 'xPhone', storage: [ 64, 128, 256 ] },{ _id: 3, name: 'SmartTablet', storage: [ 16, 64, 128 ] } ]$lte 運(yùn)算符
$lte 運(yùn)算符用于匹配字段小于等于(<=)指定值的文檔。$lte 運(yùn)算符的語(yǔ)法如下:
{field: {$lte: value} }以下示例使用 $lte 運(yùn)算符查找集合 products 中發(fā)布日期早于或者等于 2015-01-11 的所有文檔:
db.products.find({"releaseDate": {$lte: new ISODate('2015-01-01')} }, {name: 1,releaseDate: 1 });查詢返回的文檔如下:
[{_id: 1,name: 'xPhone',releaseDate: ISODate("2011-05-14T00:00:00.000Z")},{_id: 2,name: 'xTablet',releaseDate: ISODate("2011-09-01T00:00:00.000Z")} ]$ne 運(yùn)算符
$ne 運(yùn)算符匹配字段不等于(<>)指定值的文檔。$ne 運(yùn)算符的語(yǔ)法如下:
{ field: {$ne: value}}以下示例使用 $ne 運(yùn)算符查找集合 products 中 price 不等于 899 的文檔:
db.products.find({price: {$ne: 899} }, {name: 1,price: 1 })查詢返回的文檔如下:
[{ _id: 1, name: 'xPhone', price: 799 },{ _id: 4, name: 'SmartPad', price: 699 },{ _id: 5, name: 'SmartPhone', price: 599 },{ _id: 6, name: 'xWidget' } ]$in 運(yùn)算符
$in 運(yùn)算符匹配字段等于(=)數(shù)組中任意值的文檔。$in 運(yùn)算符的語(yǔ)法如下:
{ field: { $in: [<value1>, <value2>,...] }}如果 field 只有一個(gè)值,$in 運(yùn)算符匹配該字段等于數(shù)組中任意值的文檔。如果 field 也是一個(gè)數(shù)組,$in 運(yùn)算符匹配該數(shù)組包含數(shù)組 [value1, value2,…] 中任意值的文檔。
數(shù)組列表 value1, value2, … 可以是一個(gè)常量列表或者正則表達(dá)式列表。
正則表達(dá)式是一組定義搜索模式的字符,例如正則表達(dá)式 /\d+/ 匹配任何數(shù)組,包括1,123,1234 等。
以下示例使用 $in 運(yùn)算符查找 products 集合中 price 字段等于 599 或者 799 的文檔:
db.products.find({price: {$in: [699, 799]} }, {name: 1,price: 1 })查詢返回的文檔如下:
[{ _id: 1, name: 'xPhone', price: 799 },{ _id: 4, name: 'SmartPad', price: 699 } ]$nin 運(yùn)算符
$nin 運(yùn)算符匹配字段不等于(!=)數(shù)組中任意值的文檔,或者指定字段不存在的文檔。$nin 運(yùn)算符的語(yǔ)法如下:
{ field: { $nin: [ <value1>, <value2> ...]} }以下示例使用 $nin 運(yùn)算符查找 products 集合中 price 字段既不等于 599 也不等于 799 的文檔:
db.products.find({price: {$nin: [699, 799]} }, {name: 1,price: 1 })查詢返回的文檔如下:
[{ _id: 2, name: 'xTablet', price: 899 },{ _id: 3, name: 'SmartTablet', price: 899 },{ _id: 5, name: 'SmartPhone', price: 599 } ]以下示例使用 $nin 運(yùn)算符查找 color 數(shù)組字段中不包含任何匹配正則表達(dá)式 /^g+/ 或者 /^w+/ 的元素的文檔:
db.products.find({color: {$nin: [/^g+/, /^w+/]} }, {name: 1,color: 1 })查詢返回的文檔如下:
[ { _id: 3, name: 'SmartTablet', color: [ 'blue' ] } ]總結(jié)
以上是生活随笔為你收集整理的《MongoDB入门教程》第08篇 比较运算符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【电路分析基础】知识总结
- 下一篇: 【html】【一个简单的网上购物页面代码