gpt4 book ai didi

Java、MongoDB : how to insert into subdocument's empty array

转载 作者:行者123 更新时间:2023-11-29 04:53:56 24 4
gpt4 key购买 nike

我正在执行一个循环和更新,类似于this .

我有一个包含如下字段的现有文档:

"field1" : {
"field2" : []
}

使用空数组。

使用 Java,如何将文档放入空数组中?

这样做...

// BasicDBObject obj...
obj.put("field1.field2",
new BasicDBObject().append("a", "aa").append("b", "bb"));

我收到一条错误消息:

java.lang.IllegalArgumentException: Invalid BSON field name field1.field2

JavaScript 中,这很简单 - 您只需这样做,例如:

obj.field1.field2["a"] = "aa";

等等

有什么想法吗?

提前致谢。

最佳答案

你的语法有点乱。您不能在 Java 中使用 表示法。您需要创建嵌入 对象。

生成等同于:

{ "field1" : { "field2" : [ { "a" : "aa"} , { "b" : "bb"}]}}

您需要进行以下操作,

BasicDBList list = new BasicDBList();
list.add(new BasicDBObject("a","aa"));
list.add(new BasicDBObject("b","bb"));

DBObject fieldTwo = new BasicDBObject("field2",list);

DBObject fieldOne = new BasicDBObject("field1",fieldTwo);

类似地,要将某些内容推送到现有的 list 中,您需要,

  while (cursor.hasNext()) {
BasicDBObject obj = (BasicDBObject) cursor.next();
BasicDBObject fieldOne = (BasicDBObject)(obj.get("field1"));

// get the list
BasicDBList field2List = (BasicDBList)(fieldOne.get("field2"));

// add something to it
field2List.add(new BasicDBObject("a","aa"));
list.add(new BasicDBObject("b","bb"));
list.add(new BasicDBObject("c","cc"));


//save it
this.dataColl.save(obj);
}

会给你,

{ "field1" : { "field2" : [ { "a" : "aa"} , { "b" : "bb"} , { "c" : "cc"}]}}

BasicDBObject以键 namevalue 作为参数。key 名称不能包含 . 运算符。这就是您收到错误的原因:

Invalid BSON field name field1.field2

关于Java、MongoDB : how to insert into subdocument's empty array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34444151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com