Sử dụng toán tử $where cho phép chạy biểu thức JavaScript tùy ý để so sánh giá trị giữa các trường trong cùng tài liệu. Tạo collection đơn hàng:
> db.demo589.insertOne({deliveryAddress:"US",billingAddress:"UK"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e92c117fd2d90c177b5bccc") }
> db.demo589.insertOne({deliveryAddress:"US",billingAddress:"US"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e92c11bfd2d90c177b5bccd") }
> db.demo589.insertOne({deliveryAddress:"US",billingAddress:"AUS"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e92c11ffd2d90c177b5bcce") }
> db.demo589.insertOne({deliveryAddress:"UK",billingAddress:"US"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e92c127fd2d90c177b5bccf") }
Hiển thị tất cả:
> db.demo589.find();
Truy vấn $where so sánh 2 trường trong cùng tài liệu:
> db.demo589.find( { $where: "this.deliveryAddress == this.billingAddress" } );Kết quả (chỉ bản ghi 2 trùng khớp):
Cảnh báo:
$wherechạy JavaScript engine, chậm hơn nhiều so với toán tử truy vấn gốc. Chỉ dùng khi không thể biểu diễn bằng$expr(aggregation) hoặc các toán tử chuẩn. Từ MongoDB 4.4, dùng$exprtrong find:db.demo589.find({$expr: {$eq: ["$deliveryAddress", "$billingAddress"]}}).