【发布时间】:2012-08-01 18:49:00
【问题描述】:
我正在使用 MongoDB 和 Perl。这是我的数据结构:
{
"_id" : ObjectId("501976f8005c8b541d000000"),
"err_id" : "err",
"solution" : [
{
"attachment" : "attach",
"macr" : "macrs",
"yammer" : "yam",
"resolution" : "l",
"salesforce" : "salesforce",
"username" : "bob"
},
{
"attachment" : "attach",
"macr" : "macrs",
"yammer" : "yam",
"resolution" : "losssss",
"salesforce" : "salesforce",
"username" : "bob"
}
]
}
如您所见,我有一个包含对象的数组。我使用 Perl MongoDB 库创建了它。
我熟悉一些在 Perl MongoDB 库中操作数组的语法。例如,我使用它来查找用户名与 $username 相同的条目。
$users->find({"solution.username" => $username});
我认为删除元素会很简单:
$users->remove({"solution.username" => $username});
可惜,事实并非如此。我试过这个并使用拉,但无济于事!我很难找到这个。有人知道根据其中一个字段的内容删除数组元素的语法吗?
【问题讨论】:
-
就像 find() 返回整个文档一样, remove() 删除整个文档..
-
正确 - 因为我实际上想删除整个文档!但似乎它根本没有删除任何东西。我的示例语法是正确的语法吗?
-
我不熟悉 Perl 语法,但我查看了文档。看起来没问题。如果您的 find() 确实返回了一些文档,那么您的 remove() 理想情况下应该删除所有这些文档,因为您的查询与示例中提到的完全相同。
-
你试过检查错误信息吗?您应该在运行后致电
last_error()以确保没有问题,或者运行$users->remove({"solution.username" => $username},{safe => 1});会因错误而发出嘶嘶声。