- 浏览: 1071510 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
目标:向数据库插入两条Notes,一个包含标签一个没有,然后通过Update给不包含标签的Notes添加标签
为了完成我们的目标,首先我们的到http://github.com/samus/mongodb-csharp 下载Mongodb的c#驱动,解压缩并打开Visual Studio解决方案,然后编译得到两个DLL的:MongoDB.Driver.dll、MongoDB.Linq.dll 。我们用json.net来实现序列化和反序列化,您可以从这里下载 。
接着我们用vs2010创建一个简单的控制台应用程序,这里提供三种用C#操作MongoDB的方法:1.使用JSON 2.使用序列化/反序列化的Json.Net 3.使用动态代理
一、这里我们创建一个帮助类(MongoJson.cs)来实现数据库Document和C# 实体类之间的映射:
using System.Collections.Generic;
using System.Linq;
using MongoDB.Driver;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Pls.MdbIntro
{
public class MongoJson
{
private const string _oidContainerName = "_id";
public T ObjectFrom<T>(Document document)
where T : class, IMongoEntity
{
if (document == null)
return null;
return JsonConvert.DeserializeObject<T>(document.ToString());
}
public Document DocumentFrom(string json)
{
return PopulateDocumentFrom(new Document(), json);
}
public Document DocumentFrom<T>(T item)
where T : class, IMongoEntity
{
return PopulateDocumentFrom(new Document(), item);
}
public Document PopulateDocumentFrom<T>(Document document, T item)
where T : class, IMongoEntity
{
if (item == null)
return document;
var json = JsonConvert.SerializeObject(item, Formatting.None);
return PopulateDocumentFrom(document, json);
}
private Document PopulateDocumentFrom(Document document, string json)
{
var keyValues = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
foreach (var keyValue in keyValues)
{
var isEmptyKeyField = (
keyValue.Key == _oidContainerName && document[_oidContainerName] != MongoDBNull.Value);
if (isEmptyKeyField)
continue;
var value = keyValue.Value ?? MongoDBNull.Value;
if (value != MongoDBNull.Value)
{
var arrayValue = (keyValue.Value as JArray);
if (arrayValue != null)
value = arrayValue.Select(j => (string)j).ToArray();
}
if (document.Contains(keyValue.Key))
document[keyValue.Key] = value;
else
{
if (value != MongoDBNull.Value)
document.Add(keyValue.Key, value);
}
}
return document;
}
}
}
二、创建Note实体类
public interface IMongoEntity
{
string _id { get; set; }
Oid GetOid();
Document GetAsDocument();
void UpdateFromDocument(Document document);
}
[Serializable]
public class Note
: IMongoEntity
{
public virtual string _id { get; set; }
public virtual string Title { get; set; }
public virtual string Body { get; set; }
public virtual string[] Tags { get; set; }
public virtual Oid GetOid()
{
return new Oid(_id);
}
public virtual Document GetAsDocument()
{
throw new NotImplementedException();
}
public virtual void UpdateFromDocument(Document document)
{
throw new NotImplementedException();
}
}
三、编写测试代码
var json = new MongoJson();
var mongo = new Mongo();
mongo.Connect();
var db = mongo["SimpleNotes"];
db.SendCommand("dropDatabase");
var notes = db["Notes"];
PrintNotes("Initial notes", notes);
//创建一个包含Tags的Note
var firstNoteDocument = json.DocumentFrom("{Title : \"First note using Json.\", Body : \"Some nice text.\", Tags : [\"MongoDB\", \"Getting started\"]}");
notes.Insert(firstNoteDocument);
//创建不包含Tags的Note
var secondNoteDocument = json.DocumentFrom("{Title : \"Second note using Json.\", Body : \"Some nice text.\"}");
notes.Insert(secondNoteDocument);
//查询Tags为空的Note并更新添加Tags
var noteDocument = notes.FindOne(new Document { { "Tags", MongoDBNull.Value } });
noteDocument.Update(json.DocumentFrom("{Tags : [\"The tag\"]}"));
notes.Update(noteDocument);
mongo.Disconnect();
为了完成我们的目标,首先我们的到http://github.com/samus/mongodb-csharp 下载Mongodb的c#驱动,解压缩并打开Visual Studio解决方案,然后编译得到两个DLL的:MongoDB.Driver.dll、MongoDB.Linq.dll 。我们用json.net来实现序列化和反序列化,您可以从这里下载 。
接着我们用vs2010创建一个简单的控制台应用程序,这里提供三种用C#操作MongoDB的方法:1.使用JSON 2.使用序列化/反序列化的Json.Net 3.使用动态代理
一、这里我们创建一个帮助类(MongoJson.cs)来实现数据库Document和C# 实体类之间的映射:
using System.Collections.Generic;
using System.Linq;
using MongoDB.Driver;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Pls.MdbIntro
{
public class MongoJson
{
private const string _oidContainerName = "_id";
public T ObjectFrom<T>(Document document)
where T : class, IMongoEntity
{
if (document == null)
return null;
return JsonConvert.DeserializeObject<T>(document.ToString());
}
public Document DocumentFrom(string json)
{
return PopulateDocumentFrom(new Document(), json);
}
public Document DocumentFrom<T>(T item)
where T : class, IMongoEntity
{
return PopulateDocumentFrom(new Document(), item);
}
public Document PopulateDocumentFrom<T>(Document document, T item)
where T : class, IMongoEntity
{
if (item == null)
return document;
var json = JsonConvert.SerializeObject(item, Formatting.None);
return PopulateDocumentFrom(document, json);
}
private Document PopulateDocumentFrom(Document document, string json)
{
var keyValues = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
foreach (var keyValue in keyValues)
{
var isEmptyKeyField = (
keyValue.Key == _oidContainerName && document[_oidContainerName] != MongoDBNull.Value);
if (isEmptyKeyField)
continue;
var value = keyValue.Value ?? MongoDBNull.Value;
if (value != MongoDBNull.Value)
{
var arrayValue = (keyValue.Value as JArray);
if (arrayValue != null)
value = arrayValue.Select(j => (string)j).ToArray();
}
if (document.Contains(keyValue.Key))
document[keyValue.Key] = value;
else
{
if (value != MongoDBNull.Value)
document.Add(keyValue.Key, value);
}
}
return document;
}
}
}
二、创建Note实体类
public interface IMongoEntity
{
string _id { get; set; }
Oid GetOid();
Document GetAsDocument();
void UpdateFromDocument(Document document);
}
[Serializable]
public class Note
: IMongoEntity
{
public virtual string _id { get; set; }
public virtual string Title { get; set; }
public virtual string Body { get; set; }
public virtual string[] Tags { get; set; }
public virtual Oid GetOid()
{
return new Oid(_id);
}
public virtual Document GetAsDocument()
{
throw new NotImplementedException();
}
public virtual void UpdateFromDocument(Document document)
{
throw new NotImplementedException();
}
}
三、编写测试代码
var json = new MongoJson();
var mongo = new Mongo();
mongo.Connect();
var db = mongo["SimpleNotes"];
db.SendCommand("dropDatabase");
var notes = db["Notes"];
PrintNotes("Initial notes", notes);
//创建一个包含Tags的Note
var firstNoteDocument = json.DocumentFrom("{Title : \"First note using Json.\", Body : \"Some nice text.\", Tags : [\"MongoDB\", \"Getting started\"]}");
notes.Insert(firstNoteDocument);
//创建不包含Tags的Note
var secondNoteDocument = json.DocumentFrom("{Title : \"Second note using Json.\", Body : \"Some nice text.\"}");
notes.Insert(secondNoteDocument);
//查询Tags为空的Note并更新添加Tags
var noteDocument = notes.FindOne(new Document { { "Tags", MongoDBNull.Value } });
noteDocument.Update(json.DocumentFrom("{Tags : [\"The tag\"]}"));
notes.Update(noteDocument);
mongo.Disconnect();
发表评论
-
mongodb添加删除节点
2018-06-14 15:05 412replica set多服务器主从,添加,删除节点,肯定会经常 ... -
Win10 64位+mongodb集群搭建
2018-06-14 14:17 557项目中想用mongodb,于是抽时间了解了下,以此片博客作 ... -
MongoDB 备份(mongodump)与恢复(mongorestore)
2018-05-15 17:37 449MongoDB数据备份 在Mongodb中我们使用mong ... -
MongoDB 3.0查询
2015-05-14 16:28 849Find or Query Data with Java D ... -
MongoDB——第五天 主从复制
2015-05-13 15:07 651从这一篇开始我们主要讨论mongodb的部署技术。 ... -
MongoDB——第四天 索引操作
2015-05-13 15:06 610这些天项目改版,时间比较紧,博客也就没跟得上,还望大家见谅 ... -
MongoDB——第三天 细说高级操作
2015-05-13 15:05 785今天跟大家分享一下m ... -
MongoDB——第二天 细说增删查改
2015-05-13 14:58 624看过上一篇,相信大家 ... -
MongoDB——第一天 基础入门
2015-05-13 14:52 743关于mongodb的好处,优点之类的这里就不说了,唯一要讲 ... -
MongoDB学习笔记(四)
2011-10-13 14:57 1587现在这节就主要讨论插入,更新和删除文档。 插入:MongoD ... -
MongoDB简介、API、案例
2011-10-13 14:52 14511、 简介 * MongoDB是一个基于分布式文件存储的数据 ... -
MongoDB学习笔记(一) MongoDB介绍及安装
2011-10-13 14:50 1592一、前言 最近开 ... -
JAVA 操作MONGOD 实例(已经封装好方法了)
2011-10-12 16:04 0<p><span style="f ... -
JAVA 操作MONGOD
2011-10-12 15:20 1136不爱说话爱技术,以下是我整理的关于对mongodb进行增删改 ... -
Mongod 管理篇
2011-10-12 15:07 2023下面将在这一年的一些简单的管理操作做一下记录 S ... -
Mongodb在亿万级数据量上的性能测试报告
2011-10-12 14:48 1650进行了一下Mongodb亿级数据量的性能测试,分别测试如下几个 ... -
mongodb 客户端工具
2011-09-30 13:54 2047<script type="text/ja ... -
mongodb 安装详细介绍(我已经安装成功)
2011-09-30 08:59 1518一,安装mongoDB 1,解压 ... -
mongoDB 入门指南、示例
2011-09-30 08:41 965一、准备工作 1、 下载mongoDB 下载地址:htt ...
相关推荐
在本文中,我们将深入探讨 MongoDB 的基础知识以及如何使用 C# 的 samus 驱动进行数据操作。 首先,MongoDB 提供了多种语言的驱动程序,包括 C#。在 C# 中,有两个常用的 MongoDB 驱动:官方驱动和 samus 驱动。...
此外,MongoDB还提供了丰富的API和工具,如MongoDB C#驱动程序,以简化GridFS的操作。 在使用MongoDB进行文件存取时,应考虑以下最佳实践: - 定期备份数据,特别是对于重要的文件。 - 考虑文件的访问模式,优化...
MongoDB是一种开源数据库系统,由C++语言编写,旨在为Web应用提供可扩展的高性能数据存储解决方案。...在学习过程中,不断实践和理解MongoDB的特性和操作方法,将有助于你更好地利用这个强大的数据库系统。
在本篇MongoDB学习笔记中,我们将探讨如何利用MongoDB的文档结构来描述数据关系。 首先,MongoDB中的“集合”(collection)与关系型数据库中的“表”类似,但两者存在显著差异。在关系型数据库中,表的结构是预定义...
总的来说,"数据库学习笔记"涵盖了数据库基础、C#数据库编程、设计原则、性能优化、安全性和云服务等多个方面,无论你是初学者还是有经验的开发者,都能从中获取宝贵的知识和实践经验。通过深入学习和实践,你将能够...
传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,...
MongoDB 是一种高性能、开源、无模式的文档型数据库,属于 NoSQL 数据库中的热门选择。它使用 C++ 开发,适用于替代传统的关系型数据库或键/值存储方式,尤其适合大规模 Web 应用和处理大量数据。MongoDB 的特点是高...
MongoDB的GridFS是一个强大的文件存储系统,设计用于在数据库中存储和检索大量的小文件。GridFS将大文件拆分成多个小块(chunks),每个块的大小默认为256KB,以便更有效地管理和检索数据。它利用MongoDB的数据模型...
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...
MongoDB 是一种基于分布式文件存储的数据库,由 C++ 编写,专为 WEB 应用提供可扩展的高性能数据存储解决方案。作为 NoSQL 数据库的一员,MongoDB 是一款高性能、开源、无模式的文档型数据库,具有丰富的功能且与...
### MongoDB官网文档集合:全方位解析...不仅包含了产品特性的详细介绍,还有针对开发者和管理员的实际操作指南,以及对技术原理的深度剖析,对于任何希望深入了解和熟练掌握MongoDB的人来说,都是不可或缺的学习资源。
这涉及到选择合适的数据库管理系统(如MySQL、Oracle、SQL Server或MongoDB等),进行数据库模式设计,编写SQL语句进行数据操作,并确保数据的安全性和完整性。 在源程序部分,我们可以期待看到与数据库交互的应用...
5. **数据库操作**:数据库管理是许多应用程序的核心,笔记可能包括SQL查询、关系型数据库(如MySQL、PostgreSQL)和非关系型数据库(如MongoDB)的基本操作。 6. **版本控制**:Git是开发者常用的版本控制系统,...
总结来说,在Linux环境下搭建OneNote开发环境,你需要熟练掌握Linux操作系统,选择合适的开发工具,理解C#和.NET框架,熟悉数据库操作,深入研究OneNote API,以及考虑跨平台兼容性和实施CI/CD流程。这个过程既挑战...
7. **数据存储与管理**:笔记数据的存储可能采用了数据库(如SQLite、MySQL或MongoDB)或者文件系统(如JSON、XML或文本文件)。理解数据模型和存储机制对于备份、恢复和同步笔记至关重要。 8. **文本处理**:笔记...
C#有ADO.NET库,可以方便地连接和操作各种类型的数据库。此外,Entity Framework这样的ORM(Object-Relational Mapping)工具可以让开发者以面向对象的方式处理数据,减少与数据库交互时的代码复杂性。 再来说说...
:open_book: 读书笔记 :slightly_smiling_face: :upside-down_face: 买过很多书,也打印过很多电子版的书籍和资料,断断续续的读,杂乱无章。心血来潮,想自己整理一下,希望可以坚持下去,不断学习,不断提升自己。...
通过阅读源代码,我们可以了解到具体的编程语言(如Java、Python或C#)、框架(如Spring Boot或Django)以及数据存储技术(如MySQL或MongoDB)的运用。设计文档则会阐述系统架构、模块划分和交互流程,而测试报告则...