我在MongoDB中深深嵌入了文档,如下所示:
[
{
id : 1,
stuff : [
{
id : 1,
morestuff: [
{id : 1, text : "foo"},
{id : 2, text : "boo"}
]
},
{
id : 2,
morestuff: [
{id : 1, text : "foo2"},
{id : 2, text : "boo2"}
]
}
]
}
]
我的C#表示如下:
class CoreElement
{
public int id { get; set; }
public List<Stuff> stuff { get; set; }
}
class Stuff
{
public int id { get; set; }
public List<MoreStuff> morestuff { get; set; }
}
class MoreStuff
{
public int id { get; set; }
public string text { get; set; }
}
现在我可以有不同的情况:
如果我创建这样的对象:
CoreElement ce = new CoreElement();
ce.id = 1;
Stuff st = new Stuff();
st.id = 2;
MoreStuff ms = new MoreStuff();
ms.id = 17;
ms.text = "something";
st.morestuff.Add(ms);
ce.stuff.Add(st);
有没有办法将它添加到我的集合中,以便将MoreStuff添加到相应的文档(如果已存在),或创建新文档(CoreElement或Stuff)(如果尚不存在)?
任何帮助表示赞赏。感谢。
答案 0 :(得分:2)
尝试使用$addToSet
$ addToSet运算符仅在数值不在数组中时才向数组添加值。如果值在数组中,则$ addToSet返回而不修改数组。
您可以做的其他事情是加载您的CoreElement并在内存中使用它。您可以向对象添加Suffs和MoreStuffs,以使用C#检查重复项。完成对象后,只需保存它,MongoDB将用修改后的对象替换集合中的对象。