在mongodb中删除具有空数组值的键

时间:2018-03-03 21:14:39

标签: javascript mongodb mongoose

当我在数组中剩下一个项目并将其删除时,该字段变为空。是否有任何选项可以检查是否还有一个元素,然后使用$ . /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的工作方式。

1 个答案:

答案 0 :(得分:2)

如果你想确认数组中元素的数量,例如,你想要检查数组是否有一个元素:

{
    $match:{
      "myArray" :{ $size : 1 }
    }
}

并检查数组是否不存在:

   {
    $match:{
      "myArray" :{ $exists: false}
    }
}