1. 程式人生 > >MongoDB 常用運算子

MongoDB 常用運算子

$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型別的,上面的寫法就會有問題。