c# – NoSQL世界中的唯一性是什么意思,我如何处理MongoDB中的关系?

c# – NoSQL世界中的唯一性是什么意思,我如何处理MongoDB中的关系?,第1张

概述我目前正在试图弄清楚,Nosql数据库如何处理关系以及文档的唯一ID真正意味着什么. 也许我期待MongoDb过多,或者我还没有掌握NoSQL数据库中的关系概念. 基本上,以下测试失败,我想知道如何模拟用户和组之间的这种关系(这是1:0..N关系). [TestFixture]public class MongoDbExamples{ private MongoServer _mon 我目前正在试图弄清楚,Nosql数据库如何处理关系以及文档的唯一ID真正意味着什么.

也许我期待MongoDb过多,或者我还没有掌握Nosql数据库中的关系概念.

基本上,以下测试失败,我想知道如何模拟用户和组之间的这种关系(这是1:0..N关系).

[TestFixture]public class MongoDbExamples{    private MongoServer _mongoServer;    [TestFixturesetUp]    public voID FixturesetUp()    {        _mongoServer = MongoServer.Create();    }    [TestFixtureTearDown]    public voID FixtureTearDown()    {        _mongoServer.disconnect();    }    [Test]    public voID Relationtest()    {        var database = _mongoServer.GetDatabase("StackoverflowExamples");        var p = new Person() { name = "Testperson" };        var persons = database.GetCollection<Person>("Persons");        persons.Save<Person>(p);        var group = new Group() { Description = "A fancy descriptor" };        group.Add(p);        var groups = database.GetCollection<Group>("Groups");        groups.Save<Group>(group);        var readPerson = persons.FindOneByID(p.ID);        readPerson.name = "a different name";        // since the ID hasn't change this is an update of the original person:        persons.Insert<Person>(readPerson);        // and I thought that it should be reflected in the group as well:        var readGroup = groups.FindOneByID(group.ID);        Assert.AreEqual(readPerson.ID,readGroup.persons[0].ID); // this passes,the ID is the same        Assert.AreEqual(readPerson.name,readGroup.persons[0].name); // this fails,the groups person still has the old name    }}

这种关系有最佳实践吗?例如.是否应该搜索所有收藏/文件中的所有人并与人员收藏的匹配人交换那些人?或者是Nosql数据库不擅长的关系,我应该避免关系(我想知道如何在更大的系统中使用Nosql-DB然后使用更复杂的对象图)?

解决方法 没有相关集合的关系或自动更新之类的东西.好像你希望mongo表现得像ORM,但这不是它的作用,至少不是C#驱动程序.如果要保存人员和组,则必须单独保存.

您应该仅存储人员ID,而不是将完整的人物对象存储在组对象中.然后使用这些ID在需要人员数据时查找此人.

另外,您可能想阅读dbref上的文档.

http://www.mongodb.org/display/DOCS/Database+References#DatabaseReferences-DBRef

总结

以上是内存溢出为你收集整理的c# – NoSQL世界中的唯一性是什么意思,我如何处理MongoDB中的关系?全部内容,希望文章能够帮你解决c# – NoSQL世界中的唯一性是什么意思,我如何处理MongoDB中的关系?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1221825.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存