我试图使用C#向MongoDB中插入嵌套文档。我有一个名为categories的集合,该集合必须存在两个数组的文档,一个名为categories,另一个名为standards。这些数组内部必须存在新的文档,其具有自己的ID,并包含上述相同名称的数组。以下是我目前拥有的内容,但我不确定如何继续进行。如果您查看代码,我想要做的是在categories文档中将“namingConventions”文档嵌套添加到categories数组下面,但是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”进行更改,因此它们不会被推送到类别数组中正在进行的副本中,至少这就是发生在我身上的情况。希望这能澄清我所寻求的内容。