ใช้ $eq ใน find() เพื่อค้นหาเอกสารที่อาร์เรย์มีค่าเฉพาะ
ตัวดำเนินการ $eq ระบุเงื่อนไข "เท่ากับ" ใช้ใน find() เพื่อค้นหาเอกสารที่อาร์เรย์มีค่าที่ต้องการ (MongoDB จะ match อัตโนมัติถ้าอาร์เรย์มีค่านั้น)
ตัวอย่างข้อมูลทดสอบ
> db.demo426.insert({ "Ids": ["110", "120", "101"] });
> db.demo426.insert({ "Ids": ["100", "201", "401"] });
> db.demo426.insert({ "Ids": ["501", "600", "700"] });
แสดงข้อมูลทั้งหมด
> db.demo426.find().pretty();
ผลลัพธ์:
{ "_id": ObjectId("..."), "Ids": ["110", "120", "101"] }
{ "_id": ObjectId("..."), "Ids": ["100", "201", "401"] }
{ "_id": ObjectId("..."), "Ids": ["501", "600", "700"] }
คำสั่งค้นหาเอกสารที่อาร์เรย์ Ids มีค่า "501"
> db.demo426.find({ "Ids": { $eq: "501" } });
ผลลัพธ์ที่ได้
{ "_id": ObjectId("5e75e527bbc41e36cc3cae74"), "Ids": ["501", "600", "700"] }
คำอธิบาย
- { "Ids": { $eq: "501" } }: ค้นหาเอกสารที่ฟิลด์ Ids (ซึ่งเป็นอาร์เรย์) มีค่า "501" อยู่ในนั้น
- MongoDB จะ match อัตโนมัติเมื่ออาร์เรย์มีค่าที่ตรงกับ $eq
- เทียบเท่ากับ:
{ "Ids": "501" }(Implicit $eq)
ตัวดำเนินการอาร์เรย์อื่นๆ ที่เกี่ยวข้อง
| Operator | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| $eq | มีค่าเท่ากับในอาร์เรย์ | { tags: { $eq: "mongodb" } } |
| $in | มีค่าใดค่าหนึ่งในรายการ | { tags: { $in: ["mongodb", "nosql"] } } |
| $all | มีค่าครบทุกตัวในรายการ | { tags: { $all: ["mongodb", "nosql"] } } |
| $elemMatch | มีออบเจกต์ในอาร์เรย์ match ทุกเงื่อนไข | { items: { $elemMatch: { price: {$gt: 10}, qty: {$lt: 5} } } } |