我正在尝试使用 C# 将嵌套文档插入到 MongoDB 中。我有一个名为类别的集合。在该集合中必须存在具有 2 个数组、一个命名类别和一个命名标准的文档。在这些数组中必须存在具有自己 ID 的新文档,这些文档还包含上面列出的同名数组。以下是我到目前为止的内容,但我不确定如何进行。如果您查看代码,我想要做的是添加嵌套在类别文档中的类别数组下的“namingConventions”文档,但是 NamingConventions 也必须具有唯一的 ID。
在这一点上,我不确定我是否已经以最好的方式完成了其中的任何一项,所以我愿意接受关于这整个事情的任何和所有建议。
namespace ClassLibrary1
{
using MongoDB.Bson;
using MongoDB.Driver;
public class Class1
{
public void test()
{
string connectionString = "mongodb://localhost";
MongoServer server = MongoServer.Create(connectionString);
MongoDatabase standards = server.GetDatabase("Standards");
MongoCollection<BsonDocument> categories = standards.GetCollection<BsonDocument>("catagories");
BsonDocument[] batch = {
new BsonDocument { { "categories", new BsonArray {} },
{ "standards", new BsonArray { } } },
new BsonDocument { { "catagories", new BsonArray { } },
{ "standards", new BsonArray { } } },
};
categories.InsertBatch(batch);
((BsonArray)batch[0]["categories"]).Add(batch[1]);
categories.Save(batch[0]);
}
}
}
为了清楚起见,这就是我需要的:
我正在做的是建立一个编码标准网站。该公司希望将所有标准存储在 MongoDB 中的树中。每样东西都必须有一个唯一的 ID,这样除了作为树被查询之外,它也可以被自己查询。一个例子可能是:
/* 0 */
{
"_id" : ObjectId("4fb39795b74861183c713807"),
"catagories" : [],
"standards" : []
}
/* 1 */
{
"_id" : ObjectId("4fb39795b74861183c713806"),
"categories" : [{
"_id" : ObjectId("4fb39795b74861183c713807"),
"catagories" : [],
"standards" : []
}],
"standards" : []
}
现在我已经编写了代码来实现这一点,但问题似乎是当我将对象“0”添加到对象“1”中的类别数组时,它不是在进行引用,而是在复制它。这不会发生,因为如果进行更改,将对原始对象“0”进行更改,因此它们不会被推送到类别数组中正在创建的副本,至少这是发生在我身上的事情。我希望这能清除我正在寻找的东西。