J'ai une table d'utilisateurs dans MongoDB où le format ressemble à ceci:MongoDB mise à jour de requête liste imbriquée des objets
{
"_id" : ObjectId("ID"),
"user" : {
"id" : "userId",
"info" : "user info",
"subscriptions" : [
{
"subName" : "sub1",
"frequency" : 1,
"contentId" : "contentId"
}
]
}
}
Je voudrais ajouter un objet d'abonnement à ce tableau nommé « abonnements. » Voici à quoi ressemble mon code et cela ne fonctionne pas. Mon JSONParser dans ce cas fonctionne et renvoie le tableau correct.
QueryBuilder builder = QueryBuilder.start("user.id").is("userId");
DBCursor cursor = mongoClient.find(builder.get())
while (cursor.hasNext()){
DBObject user = cursor.next();
BasicDBList subscriptions = (BasicDBList)JSONParser.parseObject(user, "user.subscriptions");
subscriptions.add(subscriptionDBObject);
DBObject updateSubs = new BasicDBObject();
updateSubs.put("$set", new BasicDBObject("subscriptions" : subscriptions);
mongoClient.update(user, updateSubs);
}
Ceci s'exécute mais l'utilisateur n'est jamais édité et WriteResult retourne "updatedExisting": false. J'apprécierais grandement que quelqu'un puisse me dire ce que j'ai fait de mal ici.
Merci