如果有问题的财产是“网址”,我的直觉告诉我以下内容可行:
db.collection_123.remove({ "urls": [] });
我只是不测试它,如果它有一些意想不到的行为,比如删除urls
值为数组的每个文档。
答案 0 :(得分:4)
要安全地删除包含空数组的文档,请使用$exists
的组合(如果运算符设置为true,则匹配包含url
字段的文档,包括该字段的文档value为null)和$size
运算符:
db.collection_123.remove({ url: { $exists: true, $size: 0 } });
答案 1 :(得分:3)
首先,您始终可以使用相应的find
检查要删除的内容,该urls
采用相同的查询。
现在你的问题。基本上,您正在查找阵列中至少没有一个条目的每个文档。数组中的第一个条目用它的索引表示,即0.因此文档的urls.0
数组的第一个条目将是db.collection.find({ "urls.0": {$exists:false} })
。而且你想要所有没有这个的文件。
首先,您可以通过发出以下内容来检查您的查询:
db.collection.remove({ "urls.0": {$exists:false} })
如果您发现结果实际上符合预期,则可以使用
删除文档{{1}}
有关详细信息,请参阅dot notation。
答案 2 :(得分:1)
这应该有效
db.collection_123.remove({ "urls.0": {$exists: false} });
这基本上检查索引0处是否存在值,从而确定数组是否为空。