2012-06-20 31 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答案。 –

相關問題