2013-04-16 51 views
0

我是新來的整個JS/Mongo的東西,並試圖找到最好的辦法在這裏。貓鼬:如何找到並更新很多

基本上我有一個項目的集合,我想鎖定它們的一個子集給特定的用戶。所以一步一步

  1. 查找X解鎖項目(lock=''
  2. 集字段lock='user.name'
  3. 顯示項目用戶

好吧,可能這裏會有一些競爭條件的問題,但暫且不用擔心。主要問題是,一旦完成,user2應該無法找到/鎖定相同的項目。

在Mongoose文檔中,我找到了findOneAndUpdate這似乎正是我想要的,除了它只處理一個項目。

這裏有什麼選擇?

+0

你可以使用[.update()](http://mongoosejs.com/docs/api.html#model_Model.update)嗎? –

+0

更新可以與限制一起使用嗎?因爲我不想更新所有可用的項目,只能說10(如果只有8個解鎖,我會想要所有的課程) – danneth

+0

啊不,我錯過了這個要求... –

回答

-2

如果你正在搜索的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); 

    } 
0

有updateMany,看看mongoose docsmongo docs

db.collection.updateMany(
    <filter>, 
    <update>, 
    { 
    upsert: <boolean>, 
    writeConcern: <document>, 
    collation: <document> 
    } 
)