gpt4 book ai didi

Mongodb选择字段以返回数组中的嵌入文档

转载 作者:IT老高 更新时间:2023-10-28 13:18:00 25 4
gpt4 key购买 nike

鉴于以下示例文档:

{
"_id" : "2",
"objects" : [{
"_id" : "1",
"name" : "embedded "
},{
"_id" : "2",
"name" : "embedded "
},{
"_id" : "3",
"name" : "embedded "
}],
"name" : "gloss2"
}

是否可以只返回一个子文档?这样我就不必选择整个父对象、获取列表并遍历列表来获取相关对象。

{
"_id" : "2",
"name" : "embedded"
}

最佳答案

Is it possible to return only one subdocument?

是的,但不是您想要的方式。如果执行以下操作,则只会取回数组的第一个元素:

coll.find({_id:'2'}, { 'objects.0': 1})

但是,您真正想要的是如下所示:

coll.find({_id:'2', 'objects._id': '3'}, { 'objects.$' : 1})

当然,这实际上在 MongoDB 中不起作用。

your other question ,这是使用“嵌入对象”而不是“对象数组”的原因之一。使用“嵌入式对象”,您可以执行以下操作:

coll.find({_id:'2'}, {'objects.3': 1}) // where 3 is the id of the third object

这让您可以只选择您需要的“嵌入式对象”。

That way I don't have to select the whole parent object...

MongoDB 的特点是总是 获取父文档。查询返回顶级文档。这被融入到整个架构中。即使您只请求文档的一部分,服务器仍然必须将整个文档加载到内存中,然后再为您提供请求的部分。

解决这个问题的唯一方法可能是新的 Aggregation Framework ,但这还没有在 stable 分支中。

关于Mongodb选择字段以返回数组中的嵌入文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9201743/

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