MongoDB和Mongoose-UpdateMany,为特定文档分配特定值

时间:2019-04-05 21:55:55

标签: node.js mongodb mongoose

我有一个架构,类似于:

read

所有文档都具有唯一的IFS= read -r -d '|' firstCol # see http://mywiki.wooledge.org/BashFAQ/001 firstColWithoutT="${firstCol#T}" # see https://wiki.bash-hackers.org/syntax/pe printf '%s\n' "$firstColWithoutT" # see http://mywiki.wooledge.org/BashPitfalls#echo_.24foo 。因此,在插入新文档或重新排列现有文档时,所有文档的所有职位都需要同时更新。

要设置/重新排列位置,用户将发送以下内容:

let cat = new Schema({
    _id: {type: String, unique: true, default: shortid.generate},
    name: {type: String, required: true},
    position: {type: Number, required: true}
});

显然,position的值会有所不同,但这是要点。

我知道我可以做类似的事情:

let newPos = [
    {id: 1, position: 4}, 
    {id: 2, position: 2}, 
    {id: 3, position: 3}, 
    {id: 4, position: 1}
];

但是我可以对.updateMany()做同样的事情吗?从文档看来,所有受影响的文档的更新都相同,但我想根据其id和预定值来修改某些文档。与使用其他计数器相比,确定所有更新何时完成肯定会更容易。

编辑#1

一个(非常)类似的问题是onced asked。最佳答案是使用与我上面描述的类似的newPos.forEach((val) => { Cat.updateOne({_id: val.id}, {$set: {position: val.position}}, (err, res) => { ... }); }); ,因此这似乎是可行的方法。这就是我要实现的方式,但是请务必提供更好的方法。

0 个答案:

没有答案