【问题标题】:How to remove a field from mongodb collection on update?如何在更新时从 mongodb 集合中删除字段?
【发布时间】:2014-06-06 02:08:55
【问题描述】:

我知道如何从集合中删除字段:

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

但我想在更新文档时删除所有长度为零的文档字段。

【问题讨论】:

  • 用户编辑那里的个人资料。当他们清除某些配置文件字段(例如 icq 编号)并同时保存时,我希望文档字段不仅为空(字符串长度为 0),而且从文档中退出。

标签: javascript node.js mongodb


【解决方案1】:

我认为您可以采用以下两种方式之一:

1) 了解您的应用中哪些字段已被删除,并在更新时将其删除,就像您在问题中所做的那样。

2) 将其编写为批处理作业。这可能满足您的需要:它强制删除集合中任何文档中的任何空字段(即空字符串值)(在本例中为集合 'so')

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来使用保存字段名的变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-18
    • 2021-09-11
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 2016-04-02
    • 2015-07-30
    • 2015-09-06
    相关资源
    最近更新 更多