我有一个看起来像这样的文档:
db.blog.findOne()
{
"_id" : ObjectId("4dc1c938c4bfb4d21a000001"),
"blogid" : 1,
"body" : "Lorem ipsum dolor",
"comments" : [
{
"id" : 1,
"name" : "Alex",
"comment" : "Test",
"approved" : 1
},
{
"id" : 2,
"name" : "Phil",
"comment" : "Test",
"approved" : 1
},
{
"id" : 3,
"name" : "Joe",
"comment" : "Test",
"approved" : 0
}
],
"no_comments" : 11,
"title" : "Hello world"
}
Run Code Online (Sandbox Code Playgroud)
如果我运行查询
db.blog.update({'blogid':1}, { $pull : { 'comments' : {'approved' : 0} } });
Run Code Online (Sandbox Code Playgroud)
然后它将删除第三条评论.
如果相反,我想要将批准为0或1的所有注释拉出来,则以下查询不起作用:
db.blog.update({'blogid':1}, { $pullAll : { 'comments' : {'approved' : [0,1]} } });
Run Code Online (Sandbox Code Playgroud)
我收到了错误
修饰符$ pushAll/pullAll仅允许数组
有人可以解释我哪里出错吗?
谢谢
Vas*_*iuk 15
$pullAll需要完全匹配.您可以$pull改用:
{ $pull : { 'comments' : {'approved' : {$in : [0,1]}} } });
Run Code Online (Sandbox Code Playgroud)
这是因为 $pullAll 接受数组,而不是对象。我想以下代码应该有效:
{ $pullAll : { 'comments' : [{'approved' : 1}, {'approved' : 0}] } });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5439 次 |
| 最近记录: |