2012-05-18 66 views
1

我知道如何从集合中删除字段:如何在更新时从mongodb集合中删除字段?

db.example.update({},{$unset: {field_to_del:1}},false,true) 

但我想删除所有文档字段,其中长度为零更新文档时。

+0

用户编辑theres配置文件。并且当他们清除一些配置文件字段(例如icq数字)并保存时,同时我想要文件字段不仅仅是空的(sting长度为0),而是从文档中退出。 – Klimashkin

回答

-2

我想你可能接近这个两种方式:

1)知道你的应用程序哪些字段已被删除,并删除他们在更新,你在你的问题做。

2)将其编写为批处理作业。这大概做了你需要的东西:它强行删除任何空字段(即空字符串值)的任何文件集合中(集合“因此”在这种情况下)

var updateEmptyField = function(o){ 
    for (var f in o){ 
     if (o[f] === ''){ 
     eval ("db.so.update({},{$unset: {" + f + ":1}},false,true);"); 
     } 
    } 
} 

db.so.find().forEach(updateEmptyField); 

你需要使用eval这里使用包含字段名称的变量。