Mongodb
Posted BoSet
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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); } } }
以上是关于Mongodb的主要内容,如果未能解决你的问题,请参考以下文章
ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项
在 Spring MongoDB 的 ReplaceRoot 管道阶段使用 $mergeObjects