Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Cách áp dụng điều kiện chỉ khi field tồn tại trong MongoDB?

Để áp dụng một điều kiện chỉ khi field tồn tại (hoặc ngược lại: field không tồn tại HOẶC field tồn tại và thỏa mãn điều kiện), bạn sử dụng toán tử $or kết hợp với $exists.

Tạo dữ liệu mẫu

Lưu ý: Document cuối cùng (Robert) không có trường StudentAge.

> db.applyConditionDemo.insertOne({"StudentName":"Larry","StudentAge":21,"StudentMarks":45});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb80b78623186894665ae36") }
> db.applyConditionDemo.insertOne({"StudentName":"Sam","StudentAge":23,"StudentMarks":55});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb80b87623186894665ae37") }
> db.applyConditionDemo.insertOne({"StudentName":"David","StudentAge":21,"StudentMarks":65});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb80b95623186894665ae38") }
> db.applyConditionDemo.insertOne({"StudentName":"Carol","StudentAge":24,"StudentMarks":78});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb80ba3623186894665ae39") }
> db.applyConditionDemo.insertOne({"StudentName":"Chris","StudentAge":21,"StudentMarks":88});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb80bae623186894665ae3a") }
> db.applyConditionDemo.insertOne({"StudentName":"Robert","StudentMarks":98});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb80c3d623186894665ae3b") }

Hiển thị tất cả:

> db.applyConditionDemo.find().pretty();

Truy vấn: StudentAge = 21 HOẶC StudentAge không tồn tại

> db.applyConditionDemo.find({ $or: [ { StudentAge: { $exists:false } }, { StudentAge:21 } ]}).pretty();

Kết quả (bao gồm Robert không có StudentAge):


Mô hình chung: { $or: [ { field: { $exists: false } }, { field: giáTrịMongMuốn } ] } - Trả về document nếu field không tồn tại HOẶC field tồn tại và bằng giá trị mong muốn.