2013-06-25 4 views
0

J'utilise le pilote Java avec MongoDB. J'ai une liste d'ID de document dans une collection. Je veux mettre à jour un seul champ dans chaque document qui a un "_id" égal à l'un des identifiants de document dans ma liste. Dans l'exemple ci-dessous, j'ai essayé quelque chose comme ceci:MongoDB Mettre à jour plusieurs documents basés sur ObjectID (_id)

List<ObjectID> list = new ArrayList<ObjectID>(); 
list.append(new ObjectId("123")); 
list.append(new ObjectId("456")); 
list.append(new ObjectId("789")); 

column.updateMulti(new BasicDBObject("_id", list),new BasicDBObject("$set",new BasicDBObject("field",59))); 

Mes intentions sont de mettre à jour les documents avec _id = 123, _id = 456 et _id = 789, attribut leur mise en "champ" à 59.

Est-ce que je vais dans ce sens?

Répondre

1

Je crois que vous avez besoin de faire un changement de couple:

BasicDBList list = new BasicDBList(); 
list.add(new ObjectId("123")); 
// Add the rest... 

DBObject inStatement = new BasicDBObject("$in", list); 
column.updateMulti(new BasicDBObject("_id", inStatement), new BasicDBObject("$set", new BasicDBObject("field", 59)); 

Sinon, votre requête en cours, vous faites une comparaison d'égalité de la propriété _id à une liste de _ids - ne pas utiliser réellement le $in opérateur.

+0

Oui, cela l'a résolu! Je vous remercie!!! – ossys

Questions connexes