2016-02-01 95 views
2

不幸的是我得到了一個數組一些虛假的物體在一些文件,這些文件的結構是這樣的:的MongoDB:刪除空對象的對象數組

{ 
    "_id" : "8vJY4baMbdYkgHian", 
    "title" : "Cars", 
    "tradename" : [ 
     { 

     }, 
     { 
      "element" : "Audi" 
     }, 
     { 
      "element" : "Mercedes" 
     } 
    ] 
} 

正如你可以看到在這個例子中,第一個對象在數組中是空的。如何刪除集合中所有文檔的所有tradename列表中的空對象?

Collection.update(
    { 'tradename': {} }, 
    { $pull: { 'tradename.$': '' } } 
); 
+0

[Is object empty?]可能重複(http://stackoverflow.com/questions/4994201/is-object-empty) – Avinash

回答

0

使用$pull更新集合中的所有文件,以從陣列tradename刪除空的對象,因爲嵌入文檔僅具有element屬性的以下更新操作:

db.collection.update(
    { }, 
    { "$pull": { "tradename": { "element": { "$exists": false } } } }, 
    { "multi": true } 
) 
+0

這個我刪除元素,如果該對象沒有'元素'屬性 – azad

+0

@Azzi這就是爲什麼我明確表示_嵌入文檔具有元素屬性only_ – chridam

+0

是的,我沒有意識到 – azad

2

替代在沒有任何假設的情況下從陣列中移除空物體的方法:

db.a.update(
    {"tradename": {}}, 
    { $pull: { 'tradename': {$in:[{}]} } }, 
    { "multi": true } 
);