Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

คิวรี MongoDB ใช้ $in ในอาร์เรย์ ค้นหาค่าตรงตามรายการ

โอเปอเรเตอร์ $in ใช้ค้นหาเอกสารที่ฟิลด์อาร์เรย์มีค่าตรงกับรายการที่กำหนดอย่างน้อย 1 ค่า

> db.demo520.insertOne({"ListOfName": ["John", "Bob"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e899fb4b3fbf26334ef6114") }
> db.demo520.insertOne({"ListOfName": ["Chris", "David"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e899fbfb3fbf26334ef6115") }
> db.demo520.insertOne({"ListOfName": ["Mike", "Bob"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e899fc7b3fbf26334ef6116") }

แสดงข้อมูล:

> db.demo520.find();
{ "_id" : ObjectId("5e899fb4b3fbf26334ef6114"), "ListOfName" : [ "John", "Bob" ] }
{ "_id" : ObjectId("5e899fbfb3fbf26334ef6115"), "ListOfName" : [ "Chris", "David" ] }
{ "_id" : ObjectId("5e899fc7b3fbf26334ef6116"), "ListOfName" : [ "Mike", "Bob" ] }

คิวรีค้นหาที่มี "Bob" หรือ "Mike" ใน ListOfName

> db.demo520.find({"ListOfName": {$in: ["Bob", "Mike"]}});

ผลลัพธ์ - พบ 2 เอกสาร:


ความแตกต่าง $in vs $all

ตัวอย่าง: {$in: ["A", "B"]} เจอได้ถ้ามี A หรือ B แต่ {$all: ["A", "B"]} ต้องมีทั้ง A และ B

โอเปอเรเตอร์ความหมาย
$inตรงกับ อย่างน้อย 1 ค่า ในอาร์เรย์ (OR logic)
$allต้องมี ทุกค่า ในอาร์เรย์ (AND logic)