我是整个JS / Mongo的新手,并试图找到最好的方法。
基本上我有一组项目,我想将它们的一部分锁定到特定用户。所以一步一步
lock=''
)lock='user.name'
好的,这里可能会出现一些竞争条件问题,但暂时不要担心。主要问题是,一旦完成,user2就无法找到/锁定相同的项目。
在Mongoose文档中,我发现findOneAndUpdate似乎完全符合我的要求,除了它只处理一个项目。
这里有什么选择?
答案 0 :(得分:0)
有updateMany,请查看mongoose docs和mongo docs。
db.collection.updateMany(
<filter>,
<update>,
{
upsert: <boolean>,
writeConcern: <document>,
collation: <document>
}
)
答案 1 :(得分:-3)
如果您搜索的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);
}