Mongodb findAndUpdate $unset 具有空数组的字段
Mongodb findAndUpdate $unset a field with an empty array
这是我的示例文档:
{
keys: {
attr1: ['a', 'b', 'c'],
attr2: ['d', 'e']
}
}
我像这样删除数组中的项目...
{
$pullAll: {
'keys.attr2': ['d', 'e']
}
}
这给我留下了 attr2 字段的空数组:
{
keys: {
attr1: ['a', 'b', 'c'],
attr2: []
}
}
但我想做的是,如果该字段现在为空,那么我想要 $unset
该字段,以便最终结果如下所示:
{
keys: {
attr1: ['a', 'b', 'c']
}
}
我想在单个查找和更新操作中执行此操作。
感谢您的帮助。
很遗憾,这是不可能的。您不能在执行更新操作的同时执行其他匹配。但是,您可以执行与空数组匹配的第二次更新,然后取消设置该字段。
这只是您必须解决的一个限制。
这是我的示例文档:
{
keys: {
attr1: ['a', 'b', 'c'],
attr2: ['d', 'e']
}
}
我像这样删除数组中的项目...
{
$pullAll: {
'keys.attr2': ['d', 'e']
}
}
这给我留下了 attr2 字段的空数组:
{
keys: {
attr1: ['a', 'b', 'c'],
attr2: []
}
}
但我想做的是,如果该字段现在为空,那么我想要 $unset
该字段,以便最终结果如下所示:
{
keys: {
attr1: ['a', 'b', 'c']
}
}
我想在单个查找和更新操作中执行此操作。
感谢您的帮助。
很遗憾,这是不可能的。您不能在执行更新操作的同时执行其他匹配。但是,您可以执行与空数组匹配的第二次更新,然后取消设置该字段。
这只是您必须解决的一个限制。