частично обновить поля в документе - findAndModify удалить все остальные поля?

При использовании MongoTemplate - collection.findAndModify он удалит все поля документа и оставит только обновленные столбцы.
Почему?
Как частично обновить поля в документе?

        DBCollection collection = mongoTemplate.getCollection("company");           
        DBObject query= new BasicDBObject("companyId","1");        
        DBObject update= new BasicDBObject("phoneNumber","404-525-3928");           
        DBObject result = collection.findAndModify(query, update);


На этом этапе - все поля удалены из компании 1 ...
Обходной путь будет заключаться в том, чтобы перейти в БД, получить документ компании 1, обновить поля и сохранить его ...,
Но что если мне нужно обновить 10К из них?


person JavaSheriff    schedule 11.11.2014    source источник


Ответы (1)


Вам понадобится оператор $set в обновить документ. Вы используете этот и другие операторы обновления здесь, в противном случае то, что вы указываете заменит все, что в данный момент содержится в документе:

        DBCollection collection = mongoTemplate.getCollection("company");           
        DBObject query= new BasicDBObject("companyId","1");        
        DBObject update= new BasicDBObject(
            "$set", new BasicDBObject("phoneNumber","404-525-3928")
        );          
        DBObject result = collection.findAndModify(query, update);
person Neil Lunn    schedule 11.11.2014
comment
отлично работает спасибо! Я использовал collection.update (query, new BasicDBObject ($ set, new BasicDBObject (phoneNumber, 404-525-3928)) - person JavaSheriff; 12.11.2014