【发布时间】:2022-01-06 08:40:09
【问题描述】:
我可以在 mongosh 中完成以下工作
var pipeline = [
{ $group: { _id: "$column1", valArray: { $push: "$column2" } } },
{ $set: {
val: function1("$valArray", 70)
}
},
{ $unset: [ "valArray" ] },
{ $sort: { _id: 1 } }
];
function1 是定义为以数组和数字为参数的函数
当我尝试使用 Java 进行相同操作时,我在尝试创建列表时遇到错误
List<Bson> pipeline = Stream.of(new String[] {
"{ $group: { _id: \"$column1\", valArray: { $push: \"$column2\" } } }",
"{ $set: { percentile_n: function1(\"$valArray\", " + percentileN + ") } }",
"{ $unset: [ \"valArray\" ] }",
"{ $sort: { _id: 1 } }"
})
.map(s -> Document.parse(s).toBsonDocument())
.collect(Collectors.toList());
Exception in thread "main" org.bson.json.JsonParseException: **JSON reader was expecting a value but found 'function1'**.
at org.bson.json.JsonReader.readBsonType(JsonReader.java:263)
at org.bson.codecs.DocumentCodec.decode(DocumentCodec.java:175)
at org.bson.codecs.DocumentCodec.decode(DocumentCodec.java:44)
at org.bson.internal.LazyCodec.decode(LazyCodec.java:48)
at org.bson.codecs.ContainerCodecHelper.readValue(ContainerCodecHelper.java:61)
at org.bson.codecs.DocumentCodec.decode(DocumentCodec.java:177)
at org.bson.codecs.DocumentCodec.decode(DocumentCodec.java:44)
at org.bson.Document.parse(Document.java:126)
at org.bson.Document.parse(Document.java:111)
看起来有一种特定的方法可以为函数调用创建 BsonDocument。有人可以帮忙吗?
【问题讨论】: