DigitalPlatform / dp3

Integrated Library System, 2018
Apache License 2.0
0 stars 3 forks source link

MongoDB知识 #4

Open renyh opened 6 years ago

renyh commented 6 years ago

.NET Core使用mongodb https://www.codeproject.com/Articles/1151842/Using-MongoDB-NET-Driver-with-NET-Core-WebAPI

MongoDB数据库设计 https://blog.csdn.net/li295214001/article/details/58588673

MongoDB驱动之Linq操作 www.cnblogs.com/shy1766IT/p/5264180.html

C#驱动之LINQ教程 http://www.aichengxu.com/nosql/6004215.htm

Beginners' guide to using MongoDB 3.4 and the official C# driver https://www.codeproject.com/articles/524602/beginners-guide-to-using-mongodb-and-the-offic

MongoDB .NET Driver API Documentation mongodb.github.io/mongo-csharp-driver/2.5/apidocs/

MongoDB.NetDriver(C#驱动)-内嵌数组/嵌入文档的操作之增加、删除、修改、查询(Linq分页) https://www.2cto.com/database/201803/730040.html

基于C#的MongoDB数据库开发应用(3)--MongoDB数据库的C#开发 www.cnblogs.com/wuhuacong/p/5123313.html http://www.cnblogs.com/wuhuacong/p/5106662.html

mongodb官方文档 http://mongodb.github.io/mongo-csharp-driver/2.2/getting_started/installation/

mongodb的官方文档 https://docs.mongodb.com/ecosystem/drivers/csharp/#download-upgrade

MondoDb驱动的源代码。 https://github.com/zhongzf/mongo-csharp-driver

db.collection.find() https://docs.mongodb.com/manual/reference/method/db.collection.find/

mongodb学习笔记--$elemMatch操作符的使用 https://blog.csdn.net/u012406177/article/details/56279160

MongoDB——$elemMatch(内嵌文档查询匹配) https://blog.csdn.net/Shiyaru1314/article/details/68496642

一个专栏 https://blog.csdn.net/shiyaru1314/article/category/5866389

在.Net Core中使用MongoDB的入门教程(二) https://blog.csdn.net/only_yu_yy/article/details/78887864

GridFS

GridFS https://docs.mongodb.com/manual/core/gridfs/

GridFSBucket 前端api http://mongodb.github.io/node-mongodb-native/2.1/api/GridFSBucket.html

GridFSBucket Class C# http://api.mongodb.com/csharp/2.1/html/T_MongoDB_Driver_GridFS_GridFSBucket.htm

Beginners' guide to using MongoDB 3.4 and the official C# driver https://www.codeproject.com/articles/524602/beginners-guide-to-using-mongodb-and-the-offic

GridFS详细分析 https://blog.csdn.net/hengyunabc/article/details/7294099

renyh commented 6 years ago

.NET Core项目通过Nuget引用MongoDB驱动包

创建一个 .NET Core 的 Console Application,在Nuget包管理工具输入mongodb image

选择MongoDB.Driver这个包,然后安装,看到会自动安装依赖的下级包 image

MongoDB.Drive安装完成后,展开可看到依赖关系。 image

项目编译成功,后面就可以使用这个包的功能了。


这里特别说明一下包之间的依赖关系和添加顺序:

在Nuget包管理工具中,在左侧点一下 MongoDB.Driver 这个包,在右边可以看到它依赖的其他包。 image

我们项目如果要添加MongoDB包,只需要添加 MongoDB.Driver 这一个 Nuget 包即可,不要添加任何其他相关包。 因为 MongoDB.Driver 添加的时候它自己可以带入依赖的其他包,例如MongoDB.Driver.Core和MongoDB.Bson等,依赖的这些包不需要明显添加,它们会自动被添加,而且能自己弄清复杂的版本关系。

反过来也就是说,若我们自己单独添加一次 MongoDB.Bson 包,有可能添加了这个包的最新版本,但其实 MongoDB.Driver 只要用一个稍前的旧版本,这种可能,这样就给自己带来麻烦了。当然,你也可以找到 MongoDB 的 Nuget 包之间的版本依赖关系,你添加的时候仔细选择好版本号,但这个工作没有必要么,本来是可以避免的。

Nuget 这套体系它的精髓就是它替你搞清楚版本依赖关系。

同样,后面你发现 MongoDB.Driver 这个 Nuget 包有更新的时候,你更新它一个包即可,更新过程会自动搞清楚依赖包的版本关系,并自动更新这些依赖包。

所以添加或者更新包版本的时候一定要弄清楚有没有必要,还有依赖关系,就是说要抓住一个目的的“根”包即可,其他的不管它们。


本人前期不是很清楚Nuget包的这些依赖关系和添加技巧,先添加了MongoDB.Driver,又去填加MongoDB.Bson,结果出现下级某个依赖项版本不一致的情况,详见issue1的说明。

renyh commented 6 years ago

mongodb启动出现Failed to connect to 127.0.0.1:27017 after 5000ms milliseconds,giving up

今天一早使用mongodb,在命令行运行mongo.exe报错 image

todo

renyh commented 6 years ago

注意mongodb client的命令是区分大小写的

先通过命令行进行mongodb的程序目录,例如C:\Program Files\MongoDB\Server\4.2\bin 然后运行mongo

C:\Users\ryh>cd C:\Program Files\MongoDB\Server\4.2\bin

C:\Program Files\MongoDB\Server\4.2\bin>mongo

下面是mongo的一些命令 1.常用的命令 show dbs 显示数据库列表 use dbname 进入dbname数据库,大小写敏感,没有这个数据库也不要紧 show collections 显示数据库中的集合,相当于表格 db.dropDatabase() 删除数据库 2.创建&新增 db.users.save({"name":"jane"}) 创建了名为users的集合,并新增了一条{"name":"jane"}的数据 db.users.insert({"name":"jane2", "age":20}) 在users集合中插入一条新数据,,如果没有users这个集合,mongodb会自动创建 save()和insert()也存在着些许区别:若新增的数据主键已经存在,insert()会不做操作并提示错误,而save() 则更改原来的内容为新内容。 存在数据:{ _id : 1, " name " : "jane1 "} ,_id是主键 insert({ _id : 1, " name " : " jane3 " }) 会提示错误 save({ _id : 1, " name " : " jane3" }) 会把 jane1改为 jane3,有update的作用。 3.删除 db.users.remove({}) 删除users集合下所有数据 db.users.remove({"name": "jane"}) 删除users集合下name=jane的数据 db.users.drop()或db.runCommand({"drop","users"}) 删除集合users db.runCommand({"dropDatabase": 1}) 删除当前数据库 4.查找 db.users.find() 查找users集合中所有数据 db.users.findOne() 查找users集合中的第一条数据 5.修改 db.users.update({"name":"jane"}, {"age":10}) 修改name=jane的数据为age=10,第一个参数是查找条件,第二个参数是修改内容,除了主键,其他内容会被第二个参数的内容替换,主键不能修改


关闭服务和删除进程 1.d:\mongodb\bin>NET stop MongoDB (关闭服务) 2.:\mongodb\bin>mongod -dbpath "d:\mongodb\data" -logpath "d:\mongodb\ log\MongoDB.log" -remove -serviceName "MongoDB" 3.SC delete "MongoDB"

renyh commented 6 years ago

模糊查询 https://docs.mongodb.com/manual/reference/operator/query/regex/

MongoDB 使用 $regex 操作符来设置匹配字符串的正则表达式。

db.keys_title.find({keystring:/庵传/})
db.keys_title.find({keystring:{$regex:"庵传"}})

https://www.cnblogs.com/kaituorensheng/p/5201225.html#_label1

C# 实现

string value = "驼庵";
// 下面两种写法都可以
//var filter = Builders<KeyItem>.Filter.Regex(f => f.keystring, new BsonRegularExpression(new Regex(value)));
var filter = Builders<KeyItem>.Filter.Regex(f => f.keystring, "/"+value+"/");
var result = collection.Find(filter).ToList() ;
foreach (KeyItem item in result)
{
    idList.Add(item.ToJson());  // id要去重 todo
}
renyh commented 5 years ago

安装MongoDB

访问网页: https://www.mongodb.org/downloads 安装适当的MongoDB版本。 假定MongoDB被成功安装到了c:\program files\server\3.0子目录。

启动一个Windows命令提示符,创建数据库目录和日志目录:

mkdir c:\data\db
mkdir c:\data\log

然后,在 c:\data 里面创建一个文本文件 mongod.cfg,内容如下:

systemLog:
    destination: file
    path: c:\data\log\mongod.log
storage:
    dbPath: c:\data\db

注册MongoDB为Windows Service: 以Administrator身份启动一个Windows命令提示符,进入mongodb的程序目录,例如c:\program files\server\3.0\bin

运行命令:

mongod.exe --config "C:\data\mongod.cfg" –install

最后为了把MongoDB的Service启动起来,运行命令: net start MongoDB

注:以上安装目录均为示范举例,实际安装位置可以灵活处理。