0

我是整个 JS/Mongo 的新手,并试图在这里找到最好的方法。

基本上我有一组项目,我想将其中的一部分锁定给特定用户。所以一步一步

  1. 找到 X 个解锁物品 ( lock='')
  2. 设置字段lock='user.name'
  3. 向用户显示项目

好的,这里可能会有一些竞争条件问题,但暂时,我们不要担心。主要问题是一旦完成,用户 2 应该无法找到/锁定相同的项目。

在 Mongoose 文档中,我发现findOneAndUpdate似乎完全符合我的要求,除了它只处理一项。

这里有哪些选择?

4

2 回答 2

0

有 updateMany,看看mongoose docsmongo docs

    db.collection.updateMany(
   <filter>,
   <update>,
   {
     upsert: <boolean>,
     writeConcern: <document>,
     collation: <document>
   }
)
于 2017-10-17T07:05:16.850 回答
-4

如果您正在搜索的 api 支持不可用,您可以试试这个。首先列出与您的条件匹配的所有数据,然后在过滤后的数据上应用更新。

我举一个例子:

     Query query= query.addCriteria(Criteria.where("page_id").is(new Long("1234")));    
     List<PageWidgetDetails> pageWidgetDetailsList = mongo.find(query,    PageWidgetDetails.class);

              for (PageWidgetDetails pageWidgetDetailsObj : pageWidgetDetailsList) {
                    String widget_id=pageWidgetDetailsObj.getWidgetId();
                    query=new Query(Criteria.where("widget_id").is(widget_id));
                      update=new Update();
                     update.set("widget_description", "blah blah ....");


                     mongo.upsert(query, update, PageWidgetDetails.class);

    }
于 2013-04-16T08:53:00.310 回答