当我在数组中剩下一个项目并将其删除时,该字段变为空。是否有任何选项可以检查是否还有一个元素,然后使用$ . /etc/default/locale
更新密钥而不是删除?
这就是我所拥有的:
undefined
使用上面编写的方法,我确实得到了数组大小,但如果一个文档没有第二个文档所具有的密钥,则User.aggregate([
{$match: {email: {$in: [email, friendEmail]}}},
{
$project: {
friendSentRequests: {$size: {"$ifNull": ["$friendSentRequests", []]}},
friendReceivedRequests: {$size: {"$ifNull": ["$friendReceivedRequests", []]}},
}
}],
(err, result) => { ... }
);
会抛出数组batch
类型的错误。除非我不打算在missing
函数中进行任何更新,否则还有另一种推荐的方法来更新对象。
我不想设置(err, result) => {..}
,因为我想通过multi
更新来自不同文档的两个不同的密钥,我无法获得每个字段的数组长度。除非我误解batch
的工作方式。
答案 0 :(得分:2)
如果你想确认数组中元素的数量,例如,你想要检查数组是否有一个元素:
{
$match:{
"myArray" :{ $size : 1 }
}
}
并检查数组是否不存在:
{
$match:{
"myArray" :{ $exists: false}
}
}