Я столкнулся с проблемой. Я пытаюсь обновить, если он уже существует, еще вставьте, если его нет. Я использую Bulk API драйвера spring-mongo.
DBCollection dbCollection = mongoTemplate.getCollection("supcInfo");
BulkWriteOperation bulkWriteOperation = dbCollection.initializeUnorderedBulkOperation();
BulkUpdateRequestBuilder builder = bulkWriteOperation.find(new BasicDBObject("_id", supcInfo.getSupc())).upsert();
BasicDBObject dbObject = new BasicDBObject("$set",new BasicDBObject("_id", supcInfo.getSupc()));
dbObject = dbObject.append("$set",new BasicDBObject("pogId", supcInfo.getPogId()));
dbObject = dbObject.append("$set",new BasicDBObject("mrp", supcInfo.getMrp()));
dbObject = dbObject.append("$set",new BasicDBObject("price", supcInfo.getPrice()));
dbObject = dbObject.append("$set",new BasicDBObject("primarySellerCode", supcInfo.getPrimarySellerCode()));
dbObject = dbObject.append("$set",new BasicDBObject("camsEnabled", supcInfo.isCamsEnabled()));
dbObject = dbObject.append("$set",new BasicDBObject("availability", supcInfo.getAvailability()));
dbObject = dbObject.append("$set",new BasicDBObject("updateTs", supcInfo.getUpdateTs()));
builder.updateOne(dbObject);
bulkWriteOperation.execute();
Но не все поля обновляются. Может ли кто-нибудь сказать мне причину, и replaceOne работает нормально, но он воссоздает индекс, если он есть.
convertToDBObjectToUpdate(supcInfo)
. нужна ли нам вообще операция массовой записи, когда все, что вы пытаетесь сделать, это только обновление? - person s7vr   schedule 25.12.2016