MongoDB 常用运算符

版权声明:转载请评论留言 https://blog.csdn.net/solocao/article/details/83279988

$eq = (等于)

$gt > (大于)

$gte >= (大于等于)

$lt < (小于)

$lte <= (小于等于)

$ne != (不等于)

$in in (in)

$nin !in (not in)

参考:https://docs.mongodb.com/manual/reference/operator/query/

$eq

语法:

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

1、匹配文档值

如果指定的是文档,则文档中的字段顺序很重要。

2、匹配数组值

如果指定的是一个数组,则MongoDB将匹配数组的文档完全匹配,或者包含与数组完全匹配的元素。 元素的顺序很重要。

示例:

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" ] }12345

等于指定值

以下示例查询清单集合以选择其中qty字段的值等于20的所有文档:

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

查询匹配以下文档:

{ _id: 2, item: { name: “cd”, code:123}, qty: 20, tags: [B] } 
{ _id: 5, item: { name: “mn”, code:000}, qty: 20, tags: [ [A,B],C] }

嵌入文档中的字段等于值

以下示例查询库存集以选择所有文档,其中项目文档中名称字段的值等于“ab”。 要在嵌入文档中的字段上指定条件,请使用点符号。

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

查询结果:

{ _id: 1, item: { name: “ab”, code: “123” }, qty: 15, tags: [ “A”, “B”, “C” ] }

数组元素等于值

以下示例查询清单集合以选择标签数组包含值为“B”的元素的所有文档[1]:

db.inventory.find({tags:{$eq:"B"}})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” ] }

等于数组值

以下示例查询清单集合以选择所有文档,其中标签数组等于指定数组或标签数组包含一个等于数组[“A”,“B”]的元素。

db.inventory.find({tags:{$eq:["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” ] }

$gt >

语法:

{field: {$gt: value}}

$ gt选择字段的值大于(即>)指定值的文档。

示例:

此查询将选择库存集合中qty字段值大于20的所有文档。

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

特别注意点:

query["reward.checkername"] = { "$eq": undefined }

如果checkername是mongoose.SchemaTypes.ObjectId类型的,上面的写法就会有问题。

猜你喜欢

转载自blog.csdn.net/solocao/article/details/83279988