2013-04-16 6 views
0

Je suis nouveau à cette chose JS/Mongo et essayant de trouver la meilleure approche ici.Mongoose: comment trouver et mettre à jour beaucoup

Fondamentalement, j'ai une collection d'éléments, et je veux en verrouiller un sous-ensemble à un utilisateur spécifique. Donc, étape par étape

  1. Rechercher X articles déverrouillés (lock='')
  2. Set terrain lock='user.name'
  3. Afficher les articles à l'utilisateur

Ok, probablement, il y aura des problèmes de condition de course ici, mais pour le moment, ne nous en préoccupons pas. Le problème principal est que, une fois ceci terminé, user2 ne devrait pas être capable de trouver/verrouiller les mêmes éléments.

Dans les documents Mongoose j'ai trouvé le findOneAndUpdate qui semble faire exactement ce que je veux, sauf qu'il ne gère qu'un seul élément.

Quelles sont les options ici?

+0

Peut-on utiliser [.update()] (http://mongoosejs.com/docs/api.html#model_Model.update)? –

+0

Peut-on mettre à jour avec une limite? Parce que je ne veux pas mettre à jour tous les éléments disponibles, disons seulement 10 (s'il n'y a que 8 débloqués, je veux tout bien sûr) – danneth

+0

Ah non, j'ai raté cette exigence ... –

Répondre

-2

Si le support api que vous recherchez n'est pas disponible, vous pouvez essayer ceci. Commencez par répertorier toutes les données correspondant à votre condition, puis appliquez la mise à jour sur les données filtrées.

Je donne un exemple:

 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

Il y a updateMany, jetez un oeil à mongoose docs et mongo docs.

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