zoukankan      html  css  js  c++  java
  • Mongodb(一)

    一:打开安装包bin目录下

    二:打开cmd,切换到bin目录下

     

     三:把Mongodb安装到服务上,在cmd窗口输入mongod --install

    是mongod --install上面写错了

    四:设置配置文件,在bin目录下创建一个Data文件夹用来等下存放数据,然后新建一个mongodb.conf,打开mongodb.conf输入下面的配置信息,退出保存

    五:在cmd输入mongodb --config mongodb.conf,执行上一步的配置文件

     是mongod --config mongodb.conf上面写错了

     六:在cmd输入mongo 服务器IP:27017,例如本例是本机安装mongo与IIS,所以输入mongo 127.0.0.1:27017

    七:浏览器输入localhost:27017,出现下面这句话则表示开启成功

    八:不要关掉这个cmd。这时另外打开一个cmd操作数据库,常用命令

    use 数据库名:切换数据库
    show dbs显示所有数据库
    show collections:显示所有集合
    db:查看当前指向的文档
    db.Users:指向Users集合
    db.Users.find():查看所有数据
    db.Users.insert({写个json字符串}),在写命令时可以回车 ex:db.Users.insert({id:1,name:'bishige',age:12})
    这就是无模式的优势,想加哪个列都可以,而且区分大小写
    db.Users.remove():删除所有数据
    _id的值是由系统自己维护的,我们不需要管,可以参考文档“mongodb学习 P4”来简单说明
    查询数据:item=db.Users.find({"UId":5})
    修改:db.Users.update({条件},{新值})
    删除:db.Users.remove({条件})
    多insert几条数据,为搜索做准备
    搜索:db.Users.find({"UId":{"$gt":8}})表示大于8,great than
    读一读:db.UserInfo.find({"$or":[{"id":{"$gt":1}},{"age":{"$lt":20}}]})//id>1 or age<20
    说明:进行修改时不会迭代,删除时迭代

    九:.Net操作mongodb

    -》.net读写
    《1》引入程序集

    《2》自定义类型,用于表示集合中的实体,如Person
    定义属性,加特定[BsonId]表示与集合中ObjectId类型属性对应

    public class Person
        {
            [BsonId]
            public ObjectId Id { get; set; }
            public string Name { get; set; }
        }
    除了ID这个字段不太一样,其他定义属性跟sql server一样。因为mongodb的主键实际上是"_id":ObjectId("一大堆数字"),所以自定义id属性的时候要加上[BsonId]才能转换成ObjectId
    因为mongodb是没有表的概念的
    实际上全部都是json键值对,不是说定义Person这个模型的时候,加了Name,Id这两个属性,mongodb里面有就有Name,Id这两个字段了,不是这样的
    Person p = new Person() { Id=ObjectId.GenerateNewId(),Name="bishige"};初始化模型,id要通过ObjectId.GenerateNewId()这种方式赋值

    《3》创建连接字符串,格式如:“mongodb://127.0.0.1:27017”

    //在配置文件中设置mongodb连接字符串
    <appSettings>
        <add key="mongo" value="mongodb://127.0.0.1:27017"/>
    </appSettings>
    

      

    《4》根据连接字符串创建服务器对象:
    根据连接字符串创建MongoUrl对象url
    根据url对象创建MongoServerSettings对象settings
    根据settings创建MongoServer对象server


    《5》由服务器对象获取数据库对象MongoDatabase:server.GetDatabase("user"),如果没有会自动创建
    《6》获取集合对象
    获取类的名称,作为集合的名字:typeof(Person).Name
    由数据库对象获取集合对象:db.GetCollection<Person>(集合名称),如果集合不存在会自动创建
    《7》集合对象的方法:Insert,Update,Count,FindAll返回集合然后遍历,Find使用Query参数,FindOneById
    使用Bson方式进行查询:Query
    返回类型为MongoCursor<T>,可以使用foreach遍历
    如:Query.GT("ID",1);//表示查询ID大于1的所有数据
    通过AsQueryable()方法将集合转成IQueryable<T>,然后使用linq或lambda进行查询
    -》mongodb与redis的区别
    1、mongodb是文档型数据库
    2、mongodb支持复杂查询

     十:.Net操作MongodbDemo

    using MongoDB.Bson;
    using MongoDB.Bson.Serialization.Attributes;
    using MongoDB.Driver;
    using MongoDB.Driver.Builders;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace MongodbDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                Person pson = new Person() { Id = ObjectId.GenerateNewId(), Name = "bishige", Age = 12 };
    
                string mongoIp = System.Configuration.ConfigurationManager.AppSettings["mongo"];
                MongoUrl url = new MongoUrl(mongoIp);
                //MongoServerSettings setting = new MongoServerSettings();不能用这种new出来
                MongoServerSettings setting = MongoServerSettings.FromUrl(url);//类似工厂式创建
                MongoServer server = new MongoServer(setting);
    
                //记住MongoServer这个类,都是通过它来操作数据库
                MongoDatabase db = server.GetDatabase("hm12");
                string collectionName = pson.GetType().Name + "s";//对象.GetType().Name/FullName-》获取对象的名字,fullname是全名称,包括命名空间,这里只是想获取类名作为mongodb表名(集合名称)
                if (db.CollectionExists(collectionName))
                {
                    //如何该集合存在,就把集合取出来               
                    MongoCollection<Person> personCollection = db.GetCollection<Person>(collectionName);
    
                    //往集合里面添加模型数据
                    personCollection.Insert(pson);
    
                    //查询数据
                    QueryBuilder<Person> query = new QueryBuilder<Person>();
                    IMongoQuery q1 = query.GT(p => p.Age, 10);//大于10岁的
                    IMongoQuery q2 = query.EQ(p => p.Name, "bishige");//等于
                    IMongoQuery q3 = query.And(q1, q2);//QueryBuilder这个对象很重要,增删改查都是通过它来点出来
                    MongoCursor<Person> cursor = personCollection.Find(q3);//Find()就相当于select语句
                    //MongoCursor继承IEnumerable,所以Find()查出来的是一个集合
                    foreach (var person in cursor)
                    {
                        Console.WriteLine(person);
                    }
                }
                else
                {
                    //如何该集合不存在,就创建一个
                    CommandResult result = db.CreateCollection(collectionName);
                }
            }
        }
        public class Person
        {
            [BsonId]
            public ObjectId Id { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
            //格式化输出效果,跟OC那个重写一样
            public override string ToString()
            {
                return string.Format("Id:{0},Name:{1},Age:{2}", Id, Name, Age);
            }
        }
    }
    

      

  • 相关阅读:
    数据仓库基本概念
    收藏--关于命名规范、维度明细层及集市汇总层设计的思考
    Thinkphp6框架学习:有关数据库的基本操作
    算法第一章作业
    解决 Intellij IDEA Cannot Resolve Symbol ‘BASE Decoder’ 问题
    利用Kruskal算法求最小生成树解决聪明的猴子问题 -- 数据结构
    利用BFS解决拯救007问题 -- 数据结构
    列出连通集(DFS及BFS遍历图) -- 数据结构
    42行代码完成深入虎穴
    利用Tarjan算法解决(LCA)二叉搜索树的最近公共祖先问题——数据结构
  • 原文地址:https://www.cnblogs.com/BOSET/p/7084716.html
Copyright © 2011-2022 走看看