惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Register - Security
The Register - Security
云风的 BLOG
云风的 BLOG
U
Unit 42
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
D
Docker
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
S
Secure Thoughts
Hacker News: Ask HN
Hacker News: Ask HN
Vercel News
Vercel News
S
Security @ Cisco Blogs
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
I
Intezer
MongoDB | Blog
MongoDB | Blog
AI
AI
MyScale Blog
MyScale Blog
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
W
WeLiveSecurity
博客园 - 叶小钗
S
SegmentFault 最新的问题
N
News | PayPal Newsroom
WordPress大学
WordPress大学
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
DataBreaches.Net
小众软件
小众软件
Microsoft Azure Blog
Microsoft Azure Blog
Spread Privacy
Spread Privacy
H
Help Net Security
美团技术团队
博客园 - 司徒正美
T
Threat Research - Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
K
Kaspersky official blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
V
Vulnerabilities – Threatpost
TaoSecurity Blog
TaoSecurity Blog
N
Netflix TechBlog - Medium
L
Lohrmann on Cybersecurity
J
Java Code Geeks
量子位
Martin Fowler
Martin Fowler
博客园_首页

博客园 - Haozes

新Blog 拼写检查算法 Golang 版 Windbg 离线调试.Net 程序入门 (译)你必须知道的位运算技巧 Low Level Bit Hacks You Absolutely Must Know Windows 下 命令行增强工具 WPF Layout & Image异步加载 几篇文章了解编译原理 WPF Binding Validation 数据验证 WPF 实现Loading效果 推荐一个.NET 命令行参数Parser 库 常用开发工具介绍 使用.Net Memory Profiler 分析.Net程序内存泄露 使用Mdbg.exe 调试.Net 程序 WPF 多语言方案 .Net 2 Tip :捕获CSE和Thread.Timer与Thread.Sleep比较 使用Python操作MSSQL数据库. 运行.Net4.0程序是否要安装之前的.Net版本 javascript Disable <div> or other tag in Other Browser like FF,Chrome Delphi 无类型参数传递动态数组和静态数组
使用CSharp Driver操作Mongodb介绍
Haozes · 2011-09-27 · via 博客园 - Haozes
  • 简介

使用了一点Mongodb ,以下是自己的一点心得体会:

不提及他的分步式,效率等特性.至少以下一些特点.让我感觉没有必要再在普通应用场景再使用关系型数据库如:SQLServer那样的数据库了.

1.     省去了ORM:如NHibernate是一个优秀的ORM,性能也很好.但你得学习NHibernate的表达式语法.像NH那种文档健全的尚可接受.

        我还有一些更可怕的经历,写过很多用存储过程查询后手动映射成对象的代码.完全肉搏哦.
2.     绿色的:Mongodb,如果你不想注册成服务,只要启动那个exe就行了.数据库和数据库Data文件完全拷贝就可以迁移了.
3.     GridFS.把文件直接存在数据库里
4.     各种编程语言驱动支持.
官方支持的:
C
C# and .NET
C++
Erlang
Haskell
Java
Javascript
Perl 


开源社区支持的更多:
不列举了,很多语言没听说过.连小众的火星语言也都支持了呀.

Mongodb 官方网站: http://www.mongodb.org/downloads
C# 的Mongodb的Driver 版本也很多.本文只介绍mongodb官方网站上Csharp Driver.

这个Driver 是目前C#中,使用人数最多的,支持最完善的一个,支持MapReduce,但目前最新版本尚不支持Linq 方式查询.需要构建Query 表达式来查询,不那么直观,这个有点OUT.

3.在没有安装其他管理工具的时候,Mongodb自带了一个Shell.mongo.exe 

  • CRUD 操作示例: (示例代码摘的.比我自己写的好)

 //MongoServer manages access to MongoDatabase
MongoServer mongoServer =      MongoServer.Create("mongodb://localhost:27017");
   
//MongoDatabase used to access MongoCollection instances
_mongoDatabase = mongoServer.GetDatabase("CodeCamp");
string COLLECTION="Artists";


var artist = new Artist() { Name = "The Decembrists" };

//直接插一个对象哦,
_mongoDatabase.GetCollection<Artist>(COLLECTION)
     .Insert(artist);

//更新
artist.Name = "The Decemberists";
_mongoDatabase.GetCollection<Artist>(COLLECTION)
     .Save(artist);
//更新一批
_mongoDatabase.GetCollection<Artist>(COLLECTION).Update(
    Query.EQ("Name", "The Decemberists"),
    Update.PushAll("Albums", "Castaways and Cutouts", "Picaresque", "Hazards of Love", "The Crane Wife")
);

更多更复杂的玩法:见

一个详细介绍的PPT:

  • 其他:

附件的PPT有更多的示例.里面提到了一些使用文档型数据库对象设计的准则

  •      你的对象的模型即是你的数据模型
  •      不要怕你的对象数据冗余
  •      但也不要把所有的数据塞一个文档里
  •      不要怕在文档里保存聚合统计信息