【问题标题】:Meteor - better way to update an array in a collection , server sideMeteor - 更新集合中数组的更好方法,服务器端
【发布时间】:2017-01-15 12:54:19
【问题描述】:

我正在寻找一种在服务器端进行此更新的更好方法,您会注意到: segmentos.0 ...segmentos.1 ... segmentos.2...segmentos.3 只改变了数字。我尝试使用“for”循环和 segmentos.i ,但这不起作用。

有什么想法吗?

Partidas.update({_id:id, "usuarios.name" : usuarioName}, {"$set": {"usuarios.$.segmentos.0.eficienciaPicked":0 }, }, );
Partidas.update({_id:id, "usuarios.name" : usuarioName}, {"$set": {"usuarios.$.segmentos.1.eficienciaPicked":0},   }, );
Partidas.update({_id:id, "usuarios.name" : usuarioName}, {"$set": {"usuarios.$.segmentos.2.eficienciaPicked":0},   }, );
Partidas.update({_id:id, "usuarios.name" : usuarioName}, {"$set": {"usuarios.$.segmentos.3.eficienciaPicked":0 },   }, );

【问题讨论】:

    标签: javascript arrays meteor collections


    【解决方案1】:
    Partidas.update(
        {_id:id, "usuarios.name" : usuarioName},
        { $set: 
            { "usuarios.$.segmentos": 
                [ { eficienciaPicked: 0 }, { eficienciaPicked: 0 }, { eficienciaPicked: 0 }, { eficienciaPicked: 0 } ] 
            } 
        } 
    );
    

    将在一次更新中完成同样的事情。

    如果数组中的元素数量是动态的,则在更新前使用 for 循环将其构建在变量中,并将其设置为 var。

    【讨论】:

    • 请您对“某事”更明确一点,我尝试了某事,但没有成功。 Partidas.update({_id:id, "usuarios.name" : usuarioName}, {"$set": {"usuarios.$.segmentos"[{eficienciaPicked:0},{eficienciaPicked:0},{eficienciaPicked:0} ,{eficienciaPicked:0},{eficienciaPicked:0}],} }, );
    • $ 从“usuarios”数组中获取第一个回答咨询的用户:_id:id, "usuarios.name" : usuarioName 。我的数据库就像 Partidas.usuarios[user].segmentos[segment]。所以 $ 把我放在我寻找的用户里面,但是这个用户有一个包含 5 个段的数组的“segmentos”,我想进入这个段
    • 使用该数据模型,它应该可以像我现在编辑的那样工作吗?
    • 我试过了,几乎可以工作。所做的改变是承诺,唯一的大问题是删除所有其余的值。因为每个“段”都有名称、值、成本和效率。改动后,唯一的贡品是eficienciaPicked
    • 好吧,你知道,如果你在提问时没有提供问题中的所有相关信息,你将不会得到考虑了这些信息的答案。您为自己创建了一个困难的数据模型。 MongoDB $ 运算符只能处理一层嵌套,所以你不能在这里使用它,因为你在数组中有数组我看不出比你原来的实现更好的方法,或者在 for 循环中做好吧,如果你做对了。但它当然不会是原子的。
    猜你喜欢
    • 2017-06-08
    • 1970-01-01
    • 2016-02-24
    • 2015-12-03
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多