ใช้ ObjectId() ในเงื่อนไข find()
เพื่อค้นหาเอกสารด้วย _id ต้องห่อค่า String ด้วย ObjectId() ไม่อาจใช้ String ตรงๆ ได้
ไวยากรณ์
db.yourCollectionName.find({"_id": ObjectId("yourId")}).pretty();
ตัวอย่าง
สร้างคอลเลกชัน searchDocumentDemo 6 รายการ:
> db.searchDocumentDemo.insertOne({"UserId":1,"UserName":"Larry"});
> db.searchDocumentDemo.insertOne({"UserId":2,"UserName":"Mike"});
> db.searchDocumentDemo.insertOne({"UserId":3,"UserName":"David"});
> db.searchDocumentDemo.insertOne({"UserId":4,"UserName":"Chris"});
> db.searchDocumentDemo.insertOne({"UserId":5,"UserName":"Robert"});
> db.searchDocumentDemo.insertOne({"UserId":6,"UserName":"Sam"});
ค้นหา _id = 5c97a901330fd0aa0d2fe48b
> db.searchDocumentDemo.find({"_id": ObjectId("5c97a901330fd0aa0d2fe48b")}).pretty();
ผลลัพธ์:
{
"_id" : ObjectId("5c97a901330fd0aa0d2fe48b"),
"UserId" : 5,
"UserName" : "Robert"
}
ในโปรแกรม (Node.js, Python, Java) ให้สร้าง ObjectId จาก String ก่อนคิวรี่ เช่น new ObjectId("...") หรือ ObjectId("...")