我想更新一个数组值,但我不确定用什么方法来更新,所以我try 了下面的方法,但没有成功.

我的模特,

   childrens: {
       type: Array,
       default: ''
  }

我的问题是,

   Employeehierarchy.update({ _id: employeeparent._id} ,{ $set: {"$push": { "childrens": employee._id }} })
   .exec(function (err, managerparent) {});

谁能帮我一下吗.谢谢

推荐答案

不能在同一个更新表达式中同时使用100101作为嵌套运算符.

使用update operators的正确语法如下:

{
   <operator1>: { <field1>: <value1>, ... },
   <operator2>: { <field2>: <value2>, ... },
   ...
}

其中<operator1>, <operator2>可以来自指定为here的任何更新运算符列表.

要向数组中添加新元素,一个100运算符就足够了,例如,您可以使用101 update方法将修改后的文档作为

Employeehierarchy.findByIdAndUpdate(employeeparent._id,
    { "$push": { "childrens": employee._id } },
    { "new": true, "upsert": true },
    function (err, managerparent) {
        if (err) throw err;
        console.log(managerparent);
    }
);

使用最初的100方法,语法是

Employeehierarchy.update(
   { "_id": employeeparent._id},
   { "$push": { "childrens": employee._id } },
   function (err, raw) {
       if (err) return handleError(err);
       console.log('The raw response from Mongo was ', raw);
   }
);

其中回调函数接收参数(err, raw),其中

  • 如果出现任何错误,则为err
  • raw是Mongo的完整回复

既然你想判断修改过的文档,我建议你使用100函数,因为101方法不会给你修改过的文档,只是mongo的完整写入结果.


如果您想更新文档中的一个字段,同时向数组中添加一个元素,那么您可以这样做

Employeehierarchy.findByIdAndUpdate(employeeparent._id,
    { 
        "$set": { "name": "foo" },
        "$push": { "childrens": employee._id } 
    } 
    { "new": true, "upsert": true },
    function (err, managerparent) {
        if (err) throw err;
        console.log(managerparent);
    }
);

上面将把name字段更新为"foo",并将员工id添加到childrens数组中.

Mongodb相关问答推荐

数组相等条件返回的文档多于与相等匹配的文档:MongoDB

无法在Ubuntu 22.04上安装MongoDB 7.0

MongoDB v4.4聚合的$getfield替代方案

最有效的Mongo聚合来展开和过滤:匹配、展开、匹配与投影和过滤

try 从数据库创建、获取数据时失败(pymongo、MongoDB、docker-compose)

Mongo 聚合查找 $gte 6 个月前的日期,以DD-MM-YYYY格式存储为字符串

在 ExpirePolicy 之后从 Store 中删除元素

从 MongoDB 中的聚合结果中获取不同的值

MongoDB 将 JSON 字符串转换为数组[{obj1},{obj2}]的实际对象

Meteor 如何接收对 MongoDB 查询结果的更新?

在 MongoDB 中合并两个集合

为什么我新创建的 mongodb 本地数据库增长到 24GB?

我如何使用 Twitter 的流 api 中的推文并将它们存储在 mongodb 中

在 Mongo 中,$near 和 $nearSphere 有什么区别?

使用 Node.js 将许多记录插入 Mongodb 的正确方法

从 nodejs 到 mongodb 或 mongoose 的动态数据库连接

我在更新中对 $set 和 $inc 做错了什么

我需要手动关闭mongoose连接吗?

对象不是 JSON 可序列化的

开发人员必须采取哪些mental steps才能开始从 SQL 迁移到 NOSQL(CouchDB、Fathom DB、MongoDB 等)?