MongoDB:为对象中的每个键分配一个值

时间:2017-12-10 17:07:11

标签: mongodb

我在数据库中存储了一些需要定期重置的密钥。 它就像这样

{
  name: "Bob",
  limits:{
           one: 1000
           two: 14
           three: 19
         }
 }

我查找了一个为对象内部的所有键赋值的查询,起初我认为$each会对我有所帮助,但它的用途完全不同。

我想要的是将0分配给limits

内的所有密钥

注意:来自limits的密钥名称在用户之间不会保持不变,并且不会一直都知道。

与常规JS的Object.keys(limit).forEach(itm=> limit[itm]=0)完全相同,但在Mongo的上下文中

1 个答案:

答案 0 :(得分:0)

你已经过了一半:

您可以迭代集合并为每个光标文档应用forEach方法

db.collection.find().forEach(function(d) {
    Object.keys(d.limits).forEach(item=> d.limits[item]=0); 
    db.collection.save(d);
})

警告:这可能非常慢。