mongodb3.6系列教程8--查询操作符之比较操作符

1 $eq

1.1 语法

{ <field>: { $eq: <value> } }

说明

  • 如果field的类型为非数组,$eq的含义为相等,否则,$eq的含义为相等或包含。
  • $eq是3.0版本新增的操作符。
  • $eq等同于直接写 { field: <value> }

1.2 示例1–非数组比较

查询qty属性值为20的文档:

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

等同于以下写法:

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

1.2 示例1–数组比较

准备数据:

{ _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" ] }
1.2.1 数组字段的字符串比较

查询tags字段值包含字符串“B”的文档:

db.inventory.find( { tags: { $eq: "B" } } )

等同于以下写法:

db.inventory.find( { tags: "B" } )

结果:

{ _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" ] }
1.2.2 数组字段的数组比较

查询tags字段值包含子数组[ "A", "B" ]的文档:

db.inventory.find( { tags: { $eq: [ "A", "B" ] } } )

等同于以下写法:

db.inventory.find( { tags: [ "A", "B" ] } )

结果:

{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] }
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }

2 $gt

2.1 语法

{field: {$gt: value} }

说明

  • $gt的含义为大于

2.2 示例

查询qty字段值大于20的文档

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

3 $gte:大于或等于

$gte的含义是大于或等于,使用方式等同$gt

4 $in

4.1 语法

{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }

说明:

  • $in操作符查询字段值等于指定数组中任何值的文档
  • 如果字段为数组,则查询数组中至少有一个元素等于指定数组中任何值的文档

4.2 示例

准备数据:

{ _id: 1, item: "abc", qty: 10, tags: [ "school", "clothing" ], sale: false }

查询qty字段值是5或15的文档:

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

查询tags字段值中至少一个元素是”appliances”或”school”的文档:

db.inventory.find({ tags: { $in: ["appliances", "school"] } })

5 $lt

$lt的含义是小于,使用方式等同$gt

6 $lte

$lte的含义是小于,使用方式等同$gt

7 $ne

7.1 语法

{field: {$ne: value} }

说明

  • $ne的含义是不等于,包含字段值不等于指定值或字段不存在两种情况。

7.2 示例

查询qty字段值不等于20或者不存在qty字段的文档:

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

8 $nin

8.1 语法

{ field: { $nin: [ <value1>, <value2> ... <valueN> ]} }

说明

  • $nin的含义为不包含,包括以下情况(1)如果字段是数组类型,则数组中的每一个元素都不存在于给定的数组中。(2)如果字段为非数组,则该字段不存在于给定的数组中(3)文档不存在该字段。

8.2 示例

查询qty字段值不等于5并且不等于15或者qty字段不存在的文档:

db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值