一架梯子,一头程序猿,仰望星空!
MongoDB入门教程 > 内容正文

MongoDB条件查询(比较运算)


本章介绍,mongoDB的条件查询,类似SQL语句中的等值、大于、小于等等比较运算符。

MongoDB支持的条件操作符

操作符 描述
$eq 等值查询,类似SQL的 = 号
$gt 大于,类似SQL的 > 号
$gte 大于等于,类似SQL的 >= 号
$in 匹配数组,其中一个值,类似SQL的 in 查询
$lt 小于,类似SQL的 号
$nin 不匹配数组中的任何值,类似SQL的 not in 号

测试数据

inventory 集合数据如下

{ _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] }
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] }
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] }
{ _id: 4, item: { name: "xy", code: "456" }, qty: 30, tags: [ "B", "A" ] }
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }

$eq (等值匹配)

db.inventory.find( { qty: { $eq: 20 } } )
db.inventory.find( { "item.name": { $eq: "ab" } } )

// 简写,可以忽略$eq操作符,  qty = 20
db.inventory.find( { qty: 20 } )

等价SQL:

select * from inventory where qty = 20
// 这里是举个例子,SQL不支持item.name这种,点连接嵌套字段的格式
select * from inventory where item.name = 20

$gt (大于)

db.inventory.find( { qty: { $gt: 20 } } )

等价SQL:

select * from inventory where qty > 20

$gte (大于等于)

db.inventory.find( { qty: { $gte: 20 } } )

等价SQL:

select * from inventory where qty >= 20

$in

匹配数组中,其中一个值即可

db.inventory.find( { qty: { $in: [ 5, 15 ] } } )

等价SQL:

select * from inventory where qty in (5, 15)

$nin

跟$in操作符相反

db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )

等价SQL:

select * from inventory where qty not in (5, 15)

$lt (小于)

db.inventory.find( { qty: { $lt: 20 } } )

等价SQL:

select * from inventory where qty  20