• MongoDB netcore


    mongodb.driver

    mongodb.driver.core

    url:  http://dl.mongodb.org/dl/win32/x86_64

    *************************************************************************************

    将MongoDB数据库安装成为windows一个服务
    首先在F:MongoDB目录下新建一个mongod.cfg文件里面加上如下内容
    logpath = F:MongoDBlogsMongoDB.log
    dbpath =  F:MongoDBDATA
    一个是日志输出文件一个是数据存放文件
    然后再执行 如下命令  mongod --config F:MongoDBmongod.cfg --install

    可一步到位

    mongod --dbpath "d:mongodbdatadb" --logpath "d:mongodbdatalogMongoDB.log" --install --serviceName "MongoDB"

    *************************************************************************************

    show collections //显示所有集合

    cd d:mongodbin
    mongod --dbpath d:mongodbdbdata


    mongodb://127.0.0.1:27017
    db
    show dbs
    db.col.insert({a:"fdsfd",b:"fdsfdd",c:"sssss"})
    db.col.update({c:"sssss"},{$set:{a:"11111"}})
    db.col.insert({a:"fdsfd",b:"fdsfdd",c:"aaaaa"})
    db.col.insert({a:"fdsfd",b:"fdsfdd",c:"bbbbb"})
    db.col.find()
     db.col.remove({_id:ObjectId("5a20b4651771dd2629d3bdd9")})


    //C#***************************************************************
    var mUpdateDefinition = BsonDocument.Parse("{$set:{'b':'张三'}}");
    col.UpdateMany(x => x.a == "a1111", mUpdateDefinition);
    var djg= col.DeleteMany(x => x.a == "a441");
    var xy = col.Find<object>(x=>true).ToList();


    "".ToBsonDocument();
    "".ToJson();


    *************** server   mongod --dbpath d:mongodbdbdata  --port 20000  --auth
    show users
    db.dropUser("admin")
    db.createUser({user:"admin",pwd:"123456",roles:["readWrite"]})
    db.auth("admin","123456")

    如何创建用户管理员


    用户管理员是第一个要创建的用户。在没有创建任何用户之前,你可以随意创建用户;但数据库中一旦有了用户,那么未登录的客户端就没有权限做任何操作了,除非使用db.auth(username, password)方法登录。

    用户管理员的角色名叫 userAdminAnyDatabase,这个角色只能在 admin 数据库中创建。下面是一个例子:

    > use admin
    switched to db admin
    > db.createUser({user:"root",pwd:"root123",roles:["userAdminAnyDatabase"]})
    Successfully added user: { "user" : "root", "roles" : [ "userAdminAnyDatabase" ] }

    这个例子创建了一个名为 root 的用户管理员。创建完了这个用户之后,我们应该马上以该用户的身份登录:

    > db.auth("root","root123")
    1
    db.auth() 方法返回 1 表示登录成功。接下来我们为指定的数据库创建访问所需的账号。

    //const string strconn = "mongodb://127.0.0.1:27017";
    const string strconn = "mongodb://admin:123456@127.0.0.1:8099/test";
    // MongoDB.Driver.Core
    MongoClient ddd = new MongoClient(strconn);
    var jg = ddd.GetDatabase("test");
    //            var col = jg.GetCollection<abc>("c");
    var col = jg.GetCollection<abc>("c");
    //col.InsertOne(new abc() { a = "a441", b = "bgfdafd11", c = "cfdsad1" });
    //col.InsertOne(new abc() { a = "a441", b = "eeeee", c = "sssss" });
    //var tmp = col.Find<abc>(x => x.a == "a441" && x.b == "eeeee").ToList();
    //var mUpdateDefinition = BsonDocument.Parse("{$set:{'b':'张三'}}");
    //var jjj = col.Find(BsonDocument.Parse("{'b':'张三'}")).ToList();
    //System.Dynamic.ExpandoObject dd = jjj[0] as ExpandoObject;
    //string vvv = dd.ToJson();
    //var xy = col.Find<object>(x=>true).ToList();
    var xy = col.Find<abc>(x => x.a=="a441").ToList();
    // col.UpdateMany(x => x.a == "a1111", mUpdateDefinition);
    // var djg = col.DeleteMany(x => x.a == "a441");
    //   var collection = jg.GetCollection<object>("a");
    //collection.InsertOne(new {a="dddddd",x="ddfsfd" });
    //collection.Find<object>()
    //var fd = jg.GetCollection<String>("col");
    -----------------------------------------------------------------

    如何创建数据库用户
    首先保证你已经以用户管理员的身份登录 admin 数据库。然后用 use 命令切换到目标数据库,同样用 db.createUser() 命令来创建用户,其中角色名为 “readWrite”。
    普通的数据库用户角色有两种,read 和 readWrite。顾名思义,前者只能读取数据不能修改,后者可以读取和修改。
    下面是一个例子:
    > use test
    switched to db test
    > db.createUser({user:"testuser",pwd:"testpass",roles:["readWrite"]})
    Successfully added user: { "user" : "testuser", "roles" : [ "readWrite" ] }
    > db.auth("testuser","testpass")
    1
    这样 MongoDB 的数据安全性就得到保障了,没有登录的客户端将无法执行任何命令。

    • show dbs    显示数据库列表
    • use dbname    进入dbname数据库,大小写敏感,没有这个数据库也不要紧
    • show collections    显示数据库中的集合,相当于表格
    • db.<collection_name>.find(); 集合查找方法,参考上面的方式,使用pretty()函数是排版更好看的意思。

     而其中find方法很强大,可以组合很多条件查询的方式,如下所示:

    • db.collection.find({ "key" : value })    查找key=value的数据
    • db.collection.find({ "key" : { $gt: value } })    key > value
    • db.collection.find({ "key" : { $lt: value } })    key < value
    • db.collection.find({ "key" : { $gte: value } })    key >= value
    • db.collection.find({ "key" : { $lte: value } })    key <= value
    • db.collection.find({ "key" : { $gt: value1 , $lt: value2 } })    value1 < key <value2
    • db.collection.find({ "key" : { $ne: value } })    key <> value
    • db.collection.find({ "key" : { $mod : [ 10 , 1 ] } })    取模运算,条件相当于key % 10 == 1 即key除以10余数为1的
    • db.collection.find({ "key" : { $nin: [ 1, 2, 3 ] } })    不属于,条件相当于key的值不属于[ 1, 2, 3 ]中任何一个
    • db.collection.find({ "key" : { $in: [ 1, 2, 3 ] } })    属于,条件相当于key等于[ 1, 2, 3 ]中任何一个
    • db.collection.find({ "key" : { $size: 1 } })    $size 数量、尺寸,条件相当于key的值的数量是1(key必须是数组,一个值的情况不能算是数量为1的数组)
    • db.collection.find({ "key" : { $exists : true|false } })    $exists 字段存在,true返回存在字段key的数据,false返回不存在字度key的数据
    • db.collection.find({ "key": /^val.*val$/i })    正则,类似like;“i”忽略大小写,“m”支持多行
    • db.collection.find({ $or : [{a : 1}, {b : 2} ] })    $or或 (注意:MongoDB 1.5.3后版本可用),符合条件a=1的或者符合条件b=2的数据都会查询出来
    • db.collection.find({ "key": value , $or : [{ a : 1 } , { b : 2 }] })    符合条件key=value ,同时符合其他两个条件中任意一个的数据
    • db.collection.find({ "key.subkey" :value })    内嵌对象中的值匹配,注意:"key.subkey"必须加引号
    • db.collection.find({ "key": { $not : /^val.*val$/i } })    这是一个与其他查询条件组合使用的操作符,不会单独使用。上述查询条件得到的结果集加上$not之后就能获得相反的集合。

    当然还有插入更新的处理语句也是很特别的。

    db.student.insert({name:'student1',subject:['arts','music']})

    特别是更新操作需要说明一下,支持常规的$set方法(修改)、$unset方法(移除指定的键),还有原子级的$inc方法(数值增减),$rename方法(重命名字段名称)等等,

    db.users.update({"_id" : ObjectId("51826852c75fdd1d8b805801")},  {"$set" : {"hobby" :["swimming","basketball"]}} )
    db.users.update({"_id" : ObjectId("51826852c75fdd1d8b805801")},{"$unset" : {"hobby" :1 }} )
    db.posts.update({"_id" : ObjectId("5180f1a991c22a72028238e4")}, {"$inc":{"pageviews":1}})
    db.students.update( { _id: 1 }, { $rename: { 'nickname': 'alias', 'cell': 'mobile' } } 

    upsert是一种特殊的更新操作,不是一个操作符。(upsert = up[date]+[in]sert),也就是如果存在则更新,否则就写入一条新的记录操作。这个参数是个布尔类型,默认是false。

    db.users.update({age :25}, {$inc :{"age" :3}}, true)

    另外,Update可以对Json的集合进行处理,如果对于subject对象是一个集合的话,插入或更新其中的字段使用下面的语句

    db.student.update({name:'student5'},{$set:{subject:['music']}},{upsert:true});

    如果是记录已经存在,我们可以使用索引数值进行更新其中集合里面的数据,如下所示。

    db.student.update({name:'student3'},{$set:{'subject.0':'arts'}});

    如果我们先在集合里面增加一个记录,而非替换的话,那么使用$push语句,如下面的语句所示。

    db.student.update({name:'student3'},{$push:{'subject':'sports'}})

    相反,如果要移除集合里面的某个值,使用$pop操作符,那么语句如下所示

    db.student.update({name:'student3'},{$pop:{'subject':1}});

    其中索引为1标识最右边的记录,-1标识为最左边的记录。

    另外还可以使用$pushAll 和$pullAll来增加/移除一个或多个集合记录,如下代码所示。

    db.student.update({name:'student3'},{$pushAll:{'subject':['sports','craft']}})
    db.student.update({name:'student3'},{$pullAll:{'subject':['sports','craft']}})

    mongodb的数据库的操作还是比较容易理解的,具体可以进一步参考官网里面的介绍。

    https://docs.mongodb.org/manual/

    https://docs.mongodb.org/getting-started/csharp/client/

    http://mongodb.github.io/mongo-csharp-driver/2.2/

    http://wiki.jikexueyuan.com/project/the-little-mongodb-book/

    3、MongoDB数据库的C#驱动的使用

     数据库的C#驱动使用介绍,可以参考:https://docs.mongodb.org/getting-started/csharp/,或者http://mongodb.github.io/mongo-csharp-driver/2.2/,可以下载相关的DLL然后在项目中引用,当前的驱动版本为2.2,一般引入下面几个DLL即可。

      • MongoDB.Bson.dll
      • MongoDB.Driver.dll
      • MongoDB.Driver.Core.dll
  • 相关阅读:
    Linux基础之什么是Linux
    JavaWeb之AJAX
    JavaWeb之XML
    JavaWeb之Servlet组件
    JavaWeb之JSP
    JavaWeb之HTTP概述
    JavaWeb之开发环境搭建
    JavaWeb之JQuery
    JavaWeb之javaScript
    ddd领域驱动
  • 原文地址:https://www.cnblogs.com/xiangxiong/p/7942123.html
Copyright © 2020-2023  润新知