Java MongoDB:将新对象推送到数组并返回相同的对象

Java MongoDB:将新对象推送到数组并返回相同的对象,java,spring,mongodb,nosql,Java,Spring,Mongodb,Nosql,我的类别的MongoDB文档结构如下 { "_id" : ObjectId("5e487ce64787a51f073d0915"), "active" : true, "name" : "Luggage", "productList" : [ { "_id" : ObjectId("5e487ce64787a51f073d0adf"), "name" : "Duffle Bag" }, { "_id" : Objec

我的
类别
的MongoDB文档结构如下

{
  "_id" : ObjectId("5e487ce64787a51f073d0915"),
  "active" : true,
  "name" : "Luggage",
  "productList" : [ 
    {
      "_id" : ObjectId("5e487ce64787a51f073d0adf"),
      "name" : "Duffle Bag"
    }, 
    {
      "_id" : ObjectId("5e487ce64787a51f073d0wt4"),
      "name" : "Trolley Bag"
    }
}
是否可以将新对象添加到
productList
数组中,并在单个查询中返回相同的对象


查看MongoDB方法
updateOne
,它会返回更新操作结果,因此没有用处。我看到的另一个选项是使用
查找和修改
,返回
类别
文档,然后遍历所有产品。按
名称匹配
并返回。但这不是很有效。我正在寻找MongoDB级别而不是代码级别的解决方案。MongoDB中有什么我可以利用的吗

您的输入请求是什么?如果必须返回相同的对象,那么如果DB更新成功,为什么不返回输入请求本身呢?您是否也需要自动生成的
ObjectId()
然后,您必须获取文档并对其进行迭代以获取相应的对象。如果您正在寻找一个临时字段(即,未在db中更新,但在输出结果中)。您可以在管理管道中使用
$set
$addFields
(取决于您使用的版本)。对于
find和modify
方法,有一个名为
fields
的选项。此选项与
new:true
选项一起使用时,仅返回返回的修改文档中的投影(特定)字段。您可以指定仅返回
productList
字段。MongoDB只允许从
find和modify
返回的文档中投影特定数组元素,但不允许使用
new:true
选项。这意味着您无法返回新插入的数组元素。您的输入请求是什么?如果必须返回相同的对象,那么如果DB更新成功,为什么不返回输入请求本身呢?您是否也需要自动生成的
ObjectId()
然后,您必须获取文档并对其进行迭代以获取相应的对象。如果您正在寻找一个临时字段(即,未在db中更新,但在输出结果中)。您可以在管理管道中使用
$set
$addFields
(取决于您使用的版本)。对于
find和modify
方法,有一个名为
fields
的选项。此选项与
new:true
选项一起使用时,仅返回返回的修改文档中的投影(特定)字段。您可以指定仅返回
productList
字段。MongoDB只允许从
find和modify
返回的文档中投影特定数组元素,但不允许使用
new:true
选项。这意味着您不能返回新插入的数组元素。