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
选项。这意味着您不能返回新插入的数组元素。