我正在尝试使用Mongo ObjectId作为标准更新文档,我将其存储在并行字段contentGroupId中,但它无法正常工作。
当您使用内部ID作为主键时,使用Java驱动程序更新Mongo中的文档的最佳做法是什么?
@Override
public void updateContentGroup( ContentGroup contentGroup ) {
DBCollection contentGroupCollection = db.getCollection( "contentGroups" );
Gson gson = new Gson();
String json = gson.toJson( contentGroup );
DBObject contentGroupDoc = (DBObject) JSON.parse( json );
BasicDBObject criteriaObject = new BasicDBObject();
criteriaObject.append( "_id", "ObjectId(\"520a56b730047339c26ec1fa\")");
contentGroupCollection.update( criteriaObject, contentGroupDoc );
}
由于式提前,
圭
答案 0 :(得分:1)
我认为你的问题在这里:
criteriaObject.append( "_id", "ObjectId(\"520a56b730047339c26ec1fa\")");
应该是:
criteriaObject.append( "_id", new ObjectId("520a56b730047339c26ec1fa");
这样,字段值被视为对象id,而不是字符串(包含文字“ObjectId”)