0

我正在尝试使用存储在并行字段 contentGroupId 中的 Mongo ObjectId 作为标准来更新文档,但它不起作用。

当您使用内部 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 );
}

提前致谢,

圭多

4

1 回答 1

1

我认为你的问题在这里:

criteriaObject.append( "_id", "ObjectId(\"520a56b730047339c26ec1fa\")");

应该:

criteriaObject.append( "_id", new ObjectId("520a56b730047339c26ec1fa");

这样,字段值被视为对象 ID,而不是字符串(包含文字“ObjectId”)

于 2013-08-13T16:19:42.487 回答