gpt4 book ai didi

javascript - MongoDB 属性迭代

转载 作者:可可西里 更新时间:2023-11-01 09:14:17 25 4
gpt4 key购买 nike

我试图对 MongoDB 的工作原理有一个基本的了解,但无法找到解决这个问题的方法。我认为这是不可能的,但也许我错了?

给定以下 JSON 结构:

{
"bob": { "height": 68, "gender": "m" },
"sally": { "height": 48, "gender": "f" }
}

当此结构反序列化为 JavaScript 时,我可以轻松地迭代此对象的属性以获取人员列表。请注意,此人员列表可以/将是动态的。因此,有时“bob”不存在,有时“mike”可能存在,等等。

但是,对于 MongoDB 查询,这似乎是不可能的。 MongoDB 似乎需要这样的数据在一个数组中。然后我可以向下查询“people”数组,然后对其进行迭代。

我想确认一下,MongoDB 引擎确实无法像 JS 那样迭代属性。如果这是真的,我想这是有道理的。由于 JSON 结构同时表示数据和模式,因此具有这样的动态属性可能会使文档难以索引,如果不是不可能的话。所以也许这就是原因?我希望有人可以确认。

我希望我可以使用 MongoDB 来存储返回我的 UI 的相同 JSON 结构,但我认为该结构需要修改为如下所示的结构以用于数据存储。

{ "people": [{
"name": "bob", "height": 68, "gender": "m" }, {
"name": "sally", "height": 48, "gender": "f" }]
}

最佳答案

没错。除了显式命名键外,MongoDB 没有基于键名操作文档的功能。一个异常(exception)是服务器端 javascript,由于安全和性能问题,您应该避免使用它。原则是“不要使用数据作为键”;数据应该在值中,键给出特定的、不变的名称,您可以使用这些名称来构造查询。在您的情况下,最自然的结构似乎是让每个文档代表一个 person ,就像这样

{
"name" : "bob",
"height" : 68,
"gender" : "m"
}

先验我看不​​出为什么人们应该在一个数组而不是单独的文档中分组在一起。不过,您的用例中的其他一些因素可能会推荐它。

关于javascript - MongoDB 属性迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29236465/

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