gpt4 book ai didi

c# - 在 Mongo 中处理分层数据

转载 作者:可可西里 更新时间:2023-11-01 09:47:21 26 4
gpt4 key购买 nike



注意:我在发布后不久就回答了我自己的问题。如果您花时间阅读我的冗长帖子,我表示感谢和抱歉。



简介



我有点像 Mongo 菜鸟,只是想掌握这里的窍门。

我正在尝试创建一个分层数据结构,我可以在其中动态添加节点/叶。架构是固定的,但任何给定树上的节点都应该能够随时更改。我正在寻找的主要内容是如何在不重写整个树的情况下添加/删除深层嵌套节点上的节点。

这是一个静态分析程序的例子,这个集合被称为“builds”。稀疏文档看起来像这样(为简洁起见删除了 _id):

{ name: "build from changeset #5678", 
assemblies: [
{ name: "someAssembly1.dll",
warnings: [
{ level: 0,
message: "something doesn't conform to our standard"
}
]
}
]
}



因此,为了启动它,我执行以下操作;

db.builds.insert({name: "build from changeset #5678})


然后,添加一个程序集:

db.builds.update({name: "build from changeset #5678"},
{$addToSet: {assemblies: {name: "someAssembly1.dll"}}})



真正的问题

现在,我该如何添加警告?我在想它可能是这样的:

db.builds.update({
name: "build from changeset #5678",
"assemblies.name": "someAssembly1.dll"
},{
$addToSet: {
assemblies.warnings: {
level: 0,
name: "something doesn't conform to our standard"
}
}
})

但这给了我"missing : after property id (shell):0"

我还尝试在 "assemblies.warnings" 周围加上引号,但上面写着 "can't append to array using string field name [warnings]"


有没有人比我更了解 Mongo 并且可以帮助我?

我尝试在 Mongo 上做深层嵌套树是错误的吗?如果我使用多个集合并具有一定的关联性会更好吗?

我的印象是不做关系(以及 ACID)是 Mongo 的主要好处之一,但话又说回来,也许那只是我的菜鸟再次出现。

最佳答案

所以我一整天都在为这个问题苦苦挣扎,果然,当我将它发布到 StackOverflow 时,我遇到了一些可以给我答案的东西。正确的答案是这样的:

db.builds.update({
name: "build from changeset #5678",
"assemblies.name": "someAssembly1.dll"
},{
$addToSet: {
"assemblies.$.warnings": {
level: 0,
name: "something doesn't conform to our standard"
}
}
})

注意

"assemblies.$.warnings"


我在这里找到它:http://groups.google.com/group/mongodb-user/browse_thread/thread/e8f4ea5dc1955a98#

关于c# - 在 Mongo 中处理分层数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791745/

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