2012-06-20 29 views
1

我已阅读文档并搜索了所有内容,但找不到如何执行此操作。 如果我有一个集合内的文档,该文档是一个空数组我可以这样删除它:使用php和mongodb,如何按类型删除文档

db.data.remove(array('document'=>array())) 

或像这样:

db.data.remove(array('document'=>[])) 

但如果数组不为空它不没有工作,所以我尝试像这样:

db.data.remove(array('document'=>array('$type'=>4))) 

我做错了吗?有没有办法做到这一点? 在另一个标准中删除文档对我无用。

+1

@JulianHollmann它不回答它,即使它符合大小标准。我提到我不能使用任何其他标准。 – nope

+0

如果您可以使用的唯一标准是type,那么您做错了什么。没有办法找出一个数组是否为空类型。 –

+0

我没有问过如何通过使用type来确定数组是否为空,我问我如何根据它的类型去除文档,这显然是一个数组。 – nope

回答

2

编辑: 最后,我发现你的问题是什么。

// test document 
{ "_id" : ObjectId("4fe1af4dd404b1863ff20aac"), "document" : [ 1 ] } 

$type操作看起来数组中,而不是数组本身所以下面发现没有返回:

db.test.find({document : { $type : 4 } }) 

现在在我的测试用例文档包含双,下面找到返回文档:

db.test.find({document : { $type : 1 } }) 
{ "_id" : ObjectId("4fe1af4dd404b1863ff20aac"), "document" : [ 1 ] } 

也请参阅有关该主题的错误报告: https://jira.mongodb.org/browse/SERVER-1475

+0

这个工作,但它没有帮助,它是类型的语法完全相同,但类型它不工作,类型是一个该死的数组 – nope

+0

请看我的udpated答案。 –

相关问题