通过Java API将具有值的字段添加到MongoDB中的现有文档中
以下代码对我不起作用:
public void addFieldWithValueToDoc(String DBName, String collName, String docID, String key, String value) {
BasicDBObject setNewFieldQuery = new BasicDBObject().append("$set", new BasicDBObject().append(key, value));
mongoClient.getDB(DBName).getCollection(collName).update(new BasicDBObject().append("_id", docID), setNewFieldQuery);
}
其中,mongoClient变量的类型为mongoClient
它的灵感来自Add new field to a collection in MongoDB。 什么是错的,怎么做才是对的? 谢谢
# 1 楼答案
我已经编写了一个JUnit测试来证明您的代码确实有效:
因此,您的代码是正确的,尽管我想指出一些关于样式的注释,以使其更具可读性:
DBName
应该是dbName
new BasicDBObject().append(key, value)
使用new BasicDBObject(key, value)
此代码与您的代码具有相同的功能,但更短、更简单:
# 2 楼答案
updateOne方法具有以下form:
因此,如果您想使用Mongodb Java driver 3.4+再添加一个字段,它将是:
以下操作更新单个文档,其中
flag:true
或者按照同样的逻辑:
如果} 将添加具有指定值的新字段,前提是新字段不违反类型约束。如果为不存在的字段指定虚线路径,
title
字段不存在,^{$set
将根据需要创建嵌入文档,以实现该字段的虚线路径