设为首页 加入收藏

TOP

MongoDB学习笔记(四)用MongoDB的文档结构描述数据关系(三)
2014-11-24 07:11:18 来源: 作者: 【 】 浏览:3
Tags:MongoDB 学习 笔记 文档 结构 描述 数据 关系
rn mongoCollection.Find(new Document { { "Detail.Address", "湖北" } }).Documents; www.2cto.com
}
///
/// 删除全部用户信息
///
public void DeleteAll()
{
mongoCollection.Remove(new Document { });
}
}
  最后,我们通过这段代码输出全部用户资料信息的BJSON格式:
///
/// 打印数据BJSON
///
public void PrintBJSON()
{
string BJSON = string.Empty;
foreach (var documet in mongoCollection.FindAll().Documents)
{
BJSON += documet.ToString();
}
Console.WriteLine(BJSON);
}
  结果如下:
{ "UserId": "1001", "UserName": "张三", "PassWord": "123456", "_id": "4d80ec1ab8a4731338000001" }
{ "UserId": "1002", "UserName": "李四", "PassWord": "123456", "Detail": { "Address": "湖北", "Age": 20, "Email": "lisi@163.com" }, "_id": "4d80ec1ab8a4731338000002" }
{ "UserId": "1003", "UserName": "王五", "PassWord": "123456", "Detail": { "Address": "广东", "Age": 20, "Email": "wangwu@163.com" }, "_id": "4d80ec1ab8a4731338000003" }
{ "UserId": "1004", "UserName": "赵六", "PassWord": "123456", "Detail": { "Address": "湖北" }, "_id": "4d80ec1ab8a4731338000004" }
二、包含“子集合”的集合操作 www.2cto.com
  同样举个例子:有一个学校人事管理 系统要统计班级和学生的信息,现在定义了一个“班级集合”,这个集合里面的学生字段是一个“学生集合”,包含了本班全部学生。
   1) linq方式实现
  基础配置我就不多说了,数据类定义如下:
///
/// 班级信息
///
public class ClassInfo
{
public string ClassName { get; set; }
public List Students { get; set; }
}
///
/// 学生信息
///
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
}
  查询叫“张三”的学生在哪个班级,以及他的详细信息:
(这里其实是ToList后在内存中查的,linq方式直接查询好像驱动不支持。)
public List Select()
{ www.2cto.com
return mongoCollection.Linq().ToList().Where(x => x.Students.Exists(s => s.Name == "张三")).ToList();
}
   1) 普通实现
  查询叫“张三”的学生在哪个班级,以及他的详细信息:
public List Select()
{ www.2cto.com
var mongocollection = mongoDatabase.GetCollection("ClassInfo");
return mongocollection.Find(new Document { { "Students.Name", "张三" } }).Documents.ToList();
}
  打印数据的BJSON:
{ "_id": "4d814bae5c5f000000005f63", "ClassName": "1001", "Students": [ { "Name": "张三", "Age": 10 }, { "Name": "李四", "Age": 0 } ] } www.2cto.com
{ "_id": "4d814bae5c5f000000005f64", "ClassName": "1002", "Students": [ ] }
{ "_id": "4d814bae5c5f000000005f65", "ClassName": "1003", "Students": [ { "Name": "王五", "Age": 11 }, { "Name": "赵六", "Age": 9 } ] }
三、小结
  通过本节例子我们发现,MongoDB有它独特的文档结构可以描述数据对象之间的一些关系特征。它虽然没有关系型数据库多表符合查询那样强大的表间查询方式,但也可以通过文档结构描述更灵活的关系特性,可以这么说,关系型数据库能做的,MongoDB基本上也可以做到。甚至有些关系数据库不容易做到的,MongoDB也可以轻松做到,比如,描述数据类的继承关系等。
本文出自 http://www.cnblogs.com/lipan/
首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇DG之物理Standby的failover 下一篇rockmongo配置文件config.php

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Java 学习线路图是怎 (2025-12-25 15:19:15)
·关于 Java 学习,有 (2025-12-25 15:19:12)
·有没有Java swing教 (2025-12-25 15:19:09)
·Start, Stop, and Di (2025-12-25 14:50:57)
·C语言入门教程:零基 (2025-12-25 14:50:54)