เป็นไปได้ไหมที่จะทำ OR ในการจับคู่ $?
ฉันหมายถึงสิ่งนี้:
db.articles.aggregate(
{ $or: [ $match : { author : "dave" }, $match : { author : "john" }] }
);
เป็นไปได้ไหมที่จะทำ OR ในการจับคู่ $?
ฉันหมายถึงสิ่งนี้:
db.articles.aggregate(
{ $or: [ $match : { author : "dave" }, $match : { author : "john" }] }
);
คำตอบ:
$match: { $or: [{ author: 'dave' }, { author: 'john' }] }
เช่นนั้นเนื่องจากตัว$match
ดำเนินการเพียงแค่นำสิ่งที่คุณใส่ลงไปในfind()
ฟังก์ชันตามปกติ
ในกรณีนี้โดยเฉพาะอย่างยิ่งที่คุณจะ$or
ไอเอ็นจีสาขาเดียวกันที่$in
ผู้ประกอบการจะเป็นทางเลือกที่ดีกว่าก็เพราะมันจะเพิ่มความสามารถในการอ่าน:
$match: {
'author': {
$in: ['dave','john']
}
}
ตามเอกสาร MongoDB $in
แนะนำให้ใช้ในกรณีนี้:
$ หรือเทียบกับ $ in
เมื่อใช้ $ หรือด้วย <expressions> ที่ตรวจสอบความเท่าเทียมกันสำหรับค่าของฟิลด์เดียวกันให้ใช้ตัวดำเนินการ $ in แทน $ หรือตัวดำเนินการ
https://docs.mongodb.com/manual/reference/operator/query/or/#or-versus-in