Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 删除值不是数组的文档_Mongodb - Fatal编程技术网

Mongodb 删除值不是数组的文档

Mongodb 删除值不是数组的文档,mongodb,Mongodb,mongodb似乎允许使用相同的语法来删除值为单个值的文档,并且每当值出现在集合中时: 这个 db.SomeCollection.deleteMany({UserId:12345}) 可以影响{UserId:12345}和{UserId:[123456789587897]} 我知道这种模式并不理想;我们使用一个单数的UserIdprop来表示单个id int和一个int数组。不过,如果你明白我的意思的话,我继承了一个利用mongodb动态特性的数据库 执行deleteMany查询,指定我只想删除

mongodb似乎允许使用相同的语法来删除值为单个值的文档,并且每当值出现在集合中时:

这个

db.SomeCollection.deleteMany({UserId:12345})

可以影响
{UserId:12345}
{UserId:[123456789587897]}

我知道这种模式并不理想;我们使用一个单数的
UserId
prop来表示单个id int和一个int数组。不过,如果你明白我的意思的话,我继承了一个利用mongodb动态特性的数据库

执行
deleteMany
查询,指定我只想删除值为单个整数的文档,最安全的方法是什么?

可以使用运算符检查字段类型,但在这种情况下并不明显。您无法检查
UserId
是否为
double
类型,因为MongoDB将指示double数组也是double(更多)。因此,您需要反转逻辑,检查您试图删除的文档是否不是数组(键入
4
):

db.SomeCollection.deleteMany({ $and: [ { UserId: 12345 }, { UserId: { $not: { $type: 4 } } } ] })