Я пытаюсь обновить записи MongoDB на основе двух параметров поиска, которые имеют значения Long. Я использую приведенный ниже код для обновления, но я не могу понять ошибки, из-за которых обновления не удались. Благодарим за любую помощь экспертов.
try {
//Code to get the connection to MongoDb
//code to get the Collection
long newupdateValue=-101L;
BasicDBObject updateQuery = new BasicDBObject().append("$set", new BasicDBObject().append("orderId", newupdateValue));
Configurer queryConfig = Configurer.getInstance(queriesFile);
String[] Ids= // List of Ids
long OrderId= //Get the Order Id
for (String id: Ids) {
long idInLong = Long.parseLong(id);
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("orderId", OrderId);
searchQuery.put("id", idInLong );
WriteResult wr = collection.updateMulti(searchQuery, updateQuery);
System.out.println(wr);
}
}
catch(Exception e) {
e.printStackTrace();
}
finally {
MongoDbConnectionManager.closeMongoDbConnection(mongoClient);
}
Подробная информация о поле MongoDb:
{
"orderId" : NumberLong("99"),
"id" : NumberLong("1234"),
}
Да, я получаю ноль. Я проверил в базе данных правильность значений моего поискового запроса. Они присутствуют.
Ну, ваш код Java не считает, что они действительны, поэтому что-то не так. Либо параметры запроса не такие, как вы думаете, либо вы указываете не на ту коллекцию. Пришло время записать и проверить.
Я попадаю в правильную коллекцию. Есть ли ошибка в настройке searchQuery и UpdateQuery?




Что говорит результат записи? Он не только сообщит вам количество обновлений, но и количество совпадений. Если совпадения говорят о
0, то критерии запроса неверны.