【问题标题】:Returning list of search values that were not updated (Mongoose, updateMany)返回未更新的搜索值列表(Mongoose、updateMany)
【发布时间】:2021-03-17 22:30:18
【问题描述】:

使用 Mongoose 的 updateMany 函数,我可以提供一个搜索列表来查找用户并进行相应更新。

const searchList = ["userA", "userB", "UNKNOWNUSER"];
const updatedRecords = await User.updateMany({username: {$in: searchList}}, {foo: "bar"});

使用nmodified 可以轻松找到结果的数量。但是如果有一个用户找不到,显然在这种情况下它不会被更新。除了一些丑陋的BulkWrite 或同步循环函数之外,不完全确定如何找到在一轮 Mongoose 行程中无法找到或更新的 searchList 中的元素。

【问题讨论】:

    标签: javascript node.js api express mongoose


    【解决方案1】:

    我知道这个答案与您询问的批量插入无关,但它可能会有所帮助。如果您想将数据插入现有数据,您可以在此处使用 for 循环:

    const searchList = ["userA", "userB", "UNKNOWNUSER"];
    for(user of searchList){
       const updated = await User.findOneAndUpdate({username: user}, {$set:{foo: "bar"}}, {new : true});
       if(updated){
         // that means it would be found
       }
    
    }
    

    【讨论】:

    • 假设我批量选择 100 个用户或 1000 个用户。这会显着影响返回时间或性能,因为它会不断请求那么多次?
    • @trafalgarson ofc 这效率不高。但是当我们说批量插入数据库时​​,我认为您不能拥有这样的控件。
    猜你喜欢
    • 2020-04-04
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2019-08-16
    • 1970-01-01
    • 2020-06-22
    相关资源
    最近更新 更多