У меня есть документ вроде следующего: как обновить только один элемент массива при обновлении
, как вы можете видеть, у меня есть объект массива: {1,3,4}
Теперь я хотите просто изменить от 4 до 10 в этом массиве и обновлять его, что у меня есть следующий код:
DBCollection coll = db.getCollection("test");
BasicDBObject newDocument = new BasicDBObject();
BasicDBObject searchQuery = new BasicDBObject().append("time", "20141105230000");
coll.update(searchQuery, newDocument);
String[] str = { "1", "3", "10" };
DBObject updateMatchingElem = new BasicDBObject("$set",
new BasicDBObject().append("entity", str));
coll.update(searchQuery, updateMatchingElem);
Но этот путь не является хорошим способом, потому что я как бы удалить объект, а затем вставить весь массив снова. Есть ли в любом случае, что я могу просто изменить один элемент, например, от 4 до 10?
Я дам вам подсказку в собственном драйвере mongo: 'db.collection.update ({" entity ": 4}, {$ set: {" entity. $ ": 10}})'. Вы можете попытаться реализовать его на Java. В mongodb вы можете обновить только один единственный элемент массива в одном запросе, даже если в массиве есть другие соответствующие элементы. Например, если в массиве есть два 4s, будет обновляться только первая ошибка 4. – BatScream