$exists
không được hỗ trợ trong aggregate
truy vấn của MongoDB . Vì vậy, trong aggregate
truy vấn thay vì $exists
có thể sử dụng $ifNull
.
cú pháp:
{ $ifNull: [ <expression>, <replacement-expression-if-null> ] }
Đã cập nhật:
để lấy b
giá trị là true
hoặc false
có thể thử truy vấn này
db.test.aggregate([
{
$project: {
b: {
$cond: [
{$ifNull: ['$b', false]}, // if
true, // then
false // else
]
}
}
}
])
Giải thích:
b = $cond: [ 'if condition satisfied', 'then true', 'else false' ];
trong đó condition = {$ifNull: ['$b', false]}
Đây if $b
không tồn tại thì condition = false
nếu không thì condition = true
.
vì vậy nếu condition = true
sau đó trả về rồi kết quả điều đó có nghĩa là b = true
if condition = false
sau đó trả về kết quả khác nghĩa là b = false