使用php和mongodb,如何按类型删除文档

时间:2012-06-20 11:03:25

标签: php mongodb

我已阅读文档并进行了全面搜索,但我找不到如何操作。 如果我在一个集合中有一个文档,并且该文档是一个空数组,我可以像这样删除它:

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

或者像这样:

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

但是如果数组不是空的,它就不起作用,所以我试着这样:

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

我做错了吗?有没有办法做到这一点? 删除其他标准的文档对我没用。

1 个答案:

答案 0 :(得分:2)

修改 最后我发现了你的问题。

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

$type运算符查看数组内部,而不是数组本身,因此以下查找不返回任何内容:

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

现在在我的testcase中文档包含一个double,下面的find返回文档:

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

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