【转】.NET平台开发Mongo基础知识

NoSQL简介

NoSQL相关的技术最近越来越受欢迎,Mongo本身就是基于NoSQL实现的。关于NoSQL你需要了解

  1. 什么是NoSQL
  2. NoSQL和传统的关系型数据库有什么区别
  3. NoSQL的优缺点

这几个问题下面的文章有所介绍:

http://www.runoob.com/mongodb/nosql.html

http://www.infoq.com/cn/news/2011/01/nosql-why/

MongoDB

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

更详细的介绍可以参见:

http://www.runoob.com/mongodb/mongodb-intro.html

MongoDB安装

去http://www.mongodb.org/downloads 地址下载并安装MongoDB。

根据你的机器选择相应的安装包,32位系统上MongoDB数据库最大为2G。

安装结束后首先创建默认的数据库存储地址c:\data\db

通过命令行mongod.exe --dbpath c:\data\db来把mongodb和存储路径关联起来,命令行显示如下:

表示关联成功,并且在27017端口上监听连接。

MongoDB后台管理Shell

在安装路径下执行mongo.exe文件会执行MongoDB Shell,是一个自带的交互式的JavaScript Shell,用来对MongoDB进行操作和管理的交互式环境。

Shell中输入help显示帮助命令

数据库创建删除

  1. Shell中输入 use tutorial来尝试连接名为tutorial的数据库,如果数据库不存在则创建。
  2. 输入db.dropdatabase()来删除当前数据库。
  3. 输入show dbs显示数据库信息。

创建删除表信息

  1. db.websites.insert({title:'www.baidu.com',url:'www.baidu.com'}) 来在websites表中插入一条记录
  2. db.websites.find()查询

 

C#操作MongoDB

首先下载.NET版本的MongoDB Driver,尝试在Nuget找一下吧:

下载并安装。

找到了API我们就可以进行增删改查了,下面的Demo Code展示了基本的数据库操作。

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

using System;

using System.Xml.Linq;

using MongoDB.Bson;

using MongoDB.Driver;

using Newtonsoft.Json;

using Newtonsoft.Json.Linq;

 

namespace WikiExampleConsole

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("Connect...");

 

            MongoConnectionStringBuilder builder = new MongoConnectionStringBuilder();

            builder.Server = new MongoServerAddress("localhost", 27017);

            builder.DatabaseName = "tutorial";

 

            MongoServer mongo = MongoServer.Create(builder);

            mongo.Connect();

 

            Console.WriteLine("Connected"); Console.WriteLine();

 

            var db = mongo.GetDatabase("tutorial");

 

            using (mongo.RequestStart(db))

            {

                var collection = db.GetCollection<BsonDocument>("books");

 

                BsonDocument book = new BsonDocument()

                    .Add("_id", BsonValue.Create(BsonType.ObjectId))

                    .Add("author""Ernest Hemingway")

                    .Add("title""For Whom the Bell Tolls");

 

                collection.Insert(book);

 

                var query = new QueryDocument("author""Ernest Hemingway");

 

                foreach (BsonDocument item in collection.Find(query))

                {

                    string json = item.ToJson();

 

                    Console.WriteLine(json);

                    Console.WriteLine();

 

                    JToken token = JToken.Parse(json);

                    token.SelectToken("title").Replace("some other title");

 

                    Console.WriteLine("Author: {0}, Title: {1}", token.SelectToken("author"), token.SelectToken("title"));

                    Console.WriteLine();

 

                    XNode node = JsonConvert.DeserializeXNode(json, "documents");

 

                    Console.WriteLine("Node:");

                    Console.WriteLine(node);

                    Console.WriteLine();

 

                    BsonElement author = item.GetElement("author");

                    BsonElement title = item.GetElement("title");

 

                    foreach (BsonElement element in item.Elements)

                    {

                        Console.WriteLine("Name: {0}, Value: {1}", element.Name, element.Value);

                    }

 

                    Console.WriteLine();

                    Console.WriteLine("Author: {0}, Title: {1}", author.Value, title.Value);

                }

            }

 

            Console.WriteLine();

            Console.Read();

 

            mongo.Disconnect();

        }

    }

}

 

相关代码托管在了https://github.com/cuicheng11165/Mongo-Demo上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web开发常用js功能性小技巧(转)

web开发常用js功能性小技巧 -------------------------------------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">; <HTML>; <HEAD>; <TITLE>; New Document </TITLE>…

android studio如何编译测试,Android Studio 进行单元测试完整教程

前言为了这个AndroidStudio的单元测试&#xff0c;从下午搞到晚上才搞明白咋操作。我学一个新知识总是那么坎坷&#xff0c;经历无数的错误路径&#xff0c;才可能找到正确的路在哪儿。我的AndroidStudio我的AndroidStudio是1.5.1版本&#xff0c;但是进行单元测试应该很早的版…

【转】算法导论学习笔记 一 分治算法

分治策略是一种常见的算法。在分治策略中&#xff0c;我们递归的求解一个问题&#xff0c;在每层递归中应用如下三个步骤&#xff1a; 1. 分解&#xff0c;将问题分解成规模更小但解决方案相同的子问题 2. 解决&#xff0c;递归的求解子问题&#xff0c;如果子问题足够小则停止…

android 对话框白色样式,Android 对话框(Dialog)样式大全以及简单实现

下面是几种对话框的效果图一&#xff1a;图二&#xff1a;图三&#xff1a;图四&#xff1a;图五&#xff1a;图六&#xff1a;图七&#xff1a;图1效果&#xff1a;该效果是当按返回按钮时弹出一个提示&#xff0c;来确保无误操作&#xff0c;采用常见的对话框样式。代码&…

【转】ABP源码分析二十一:Feature

Feature是什么&#xff1f;Feature就是对function分类的方法&#xff0c;其与function的关系就比如Role和User的关系一样。 ABP中Feature具有以下属性&#xff1a; 其中最重要的属性是name&#xff0c;用以表示feature的Identity,一个feature拥有一个name. 一个Feature可以有一…

巧克力情歌手---McKnight, Brian

巧克力情歌手&#xff0d;&#xff0d;&#xff0d;McKnight, Brian McKnight, Brian 1969年6月5日出生于美国纽约州的布法罗。Brian McKnight的哥哥Claude V. McKnight是福音音乐组Take 6的成员&#xff0c;Brian McKnight则是一名蓝调音乐歌手&#xff0c;他首先在布法罗及周…

android虚拟电话号码,为何安卓手机坚持虚拟按键?这才是原因

关于屏内虚拟按键设计的好坏&#xff0c;一直都存在很大的争议。围绕着屏内虚拟按键&#xff0c;支持者与反对者之间进行了长期的争论&#xff0c;至今仍未分出胜负。然而&#xff0c;当多功能前置指纹按键开始普及的时候&#xff0c;屏内虚拟按键似乎正在逐步走向边缘化。不过…

【转】ABP源码分析二十二:Navigation

MenuDefinition&#xff1a;封装了导航栏上的主菜单的属性。 MenuItemDefinition&#xff1a;封装了主菜单的子菜单的属性。子菜单可以引用其他子菜单构成一个菜单树 UserMenu/UserMenuItem&#xff1a;封装了用于显示给用户的菜单/以及子菜单集合。 ABP通过MenuDefinition/Me…

数据库调优都涉及哪些方面

面试时&#xff0c;经常被问及 “数据库调优”的事情&#xff0c;心想这不是DBA的事吗&#xff0c;但回答不好还是显得不够专业&#xff0c;查一下资料&#xff0c;许多还真是程序员的事情&#xff0c;下面总结一下&#xff0c;希望对大家有所帮助。方面以影响程度排序 D1 业务…

node.js android 聊天,Node.js实现简单聊天服务器

使用Nodejs是如此简单的实现了一个简单的聊天服务器实现代码如下&#xff1a;var net require(net);var chatServer net.createServer(),clientList [];chatServer.on("connection",function(client){client.name client.remoteAddress ":" client.r…

【转】ABP源码分析二十三:Authorization

Permission&#xff1a;用于定义一个Permission&#xff0c;一个permission可以包含多个子Permission. PermissionDictionary&#xff1a;继承自Dictionary<string, Permission>类&#xff0c;很明显是一个用于存储permission对象的字典。 IPermissionDefinitionContext…

VI/VIM键盘图

转载于:https://www.cnblogs.com/sdjc/archive/2006/09/14/1949532.html

android确认密码代码,Android手机卫士之确认密码对话框

本文接着实现“确认密码”功能&#xff0c;也即是用户以前设置过密码&#xff0c;现在只需要输入确认密码布局文件和《Android 手机卫士--设置密码对话框》中的布局基本类似&#xff0c;所有copy一下&#xff0c;修改一点细节就搞定&#xff1a;android:layout_width"matc…

修改MD5加密 提高网站安全

发表文章 修改MD5加密 提高网站安全2006-08-28 16:23:55大 中 小特别说明&#xff1a;此种改变只能用于在刚开始建站时才可&#xff0c;如果你中途改变的话就会出现问题。   也许提到MD5时大家都很熟&#xff0c;但你真的是这样吗&#xff1f;了解其是如何进行散列的实际过…

【转】ABP源码分析二十四:Notification

NotificationDefinition: 用于封装Notification Definnition 的信息。注意和Notification 的区别&#xff0c;如果把Notification看成是具体的消息内容&#xff0c;NotificationDefinition则是对这个消息自身的定义&#xff08;可理解为消息的类型&#xff09;。 INotification…

一剪梅

红藕香残玉簟秋。轻解罗裳&#xff0c;独上兰舟。 云中谁寄锦书来&#xff1f;雁字回时&#xff0c;月满西楼。 花自飘零水自流。一种相思&#xff0c;两处闲愁。 此情无计可消除&#xff0c;才下眉头&#xff0c;却上心头。转载于:https://www.cnblogs.com/daitengfei/archive…

android手机 scala环境,在Android中使用Scala中的Java常量

我在Android上的Scala中开发了一个奇怪的问题。我正在使用sbt android插件&#xff0c;现在我正在尝试让内容提供商工作&#xff0c;但是...在Android中使用Scala中的Java常量刚刚用Scala替换了Java的数组代码。它看起来像这样&#xff1a;val projection Array(People.NAME,P…

【转】ABP源码分析二十五:EventBus

IEventData/EventData: 封装了EventData信息&#xff0c;触发event的源对象和时间 IEventBus/EventBus: 定义和实现了了一系列注册&#xff0c;注销和触发事件处理函数的方法。EventBus定义了一个Dictionary容器来存放事件和处理该事件的对象(其实不是对象而是Factory&#xf…

深入Atlas系列:Web Sevices Access in Atlas示例(4) - 使用HTTP GET调用Web Services方法...

在之前的例子里&#xff0c;由于Atlas客户端在调用Web Services方法时总是使用了Sys.Net.ServiceMethod类&#xff0c;因此始终使用了HTTP POST方法与服务器端进行交互。POST方法有其好处&#xff0c;不过GET方法也自有其价值。我们在使用Atlas进行Web Services调用时&#xff…

【转】ABP源码分析二十六:核心框架中的一些其他功能

本文是ABP核心项目源码分析的最后一篇&#xff0c;介绍一些前面遗漏的功能 AbpSession AbpSession: 目前这个和CLR的Session没有什么直接的联系。当然可以自定义的去实现IAbpSession使之与CLR的Session关联 IAbpSession&#xff1a;定义如下图中的四个属性。 NullAbpSessio…