询问链表

collection.Find(new BsonDocument()).ForEachAsync(x =>
Console.WriteLine(x));
 

下边我们将在询问的功底之上加上排序,排序只供给在在调用Sort方法时传出对应的参数即可,比如上边包车型地铁例子,我们将对链表先实行查询,然后排序:

用作基础部分那也是最终八个局地了,利用方面包车型地铁过滤,然后调用DeleteOneAsync或DeleteManyAsync方法就足以了,比如上面的列子便是去除“counter”大于十0的拥有数据:

运用Find方法大家得以对链表实行询问,Find方法将赶回给我们IFindFluent<TDocument,TProjection>对象,该接口属于链式接口,所以可以提须求大家好像jquery那样的链式变成方式去决定查询操作。

大家也能够赢得多条数据,比如上边这几个例子,我们将寻找出富有“counter”的值大于50的数量:

经过规范查询单条数据

 

var filter = Builders<BsonDocument>.Filter.Gt(“counter”, 100);
var resut = collection.DeleteManyAsync(filter).Result;

为了拿走第2条数据大家得以经过调用FirstOrDefaultAsync方法,该方法会再次来到第一条数据,借使不设有数据则会回到null,比如上边包车型客车代码将会展现链表中的第1条数据:

固然叫获取链表,然而实际就是收获数据库中的表,大家能够透过上边database的GetCollection<TDocument>方法赢得,比如上边包车型地铁代码大家将获得三个名称为“bar”的表:

对字段投射

对数码排序

 

布置七个文书档案

 

{
     “name”: “MongoDB”,
     “type”: “database”,
     “count”: 1,
     “info”: {
         x: 203,
         y: 102
     }
}

var filter = Builders<BsonDocument>.Filter.Lt(“counter”, 10);
var updated = Builders<BsonDocument>.Update.Inc(“counter”, 100);
var result = collection.UpdateManyAsync(filter, updated).Result;
 

假定大家要求批量的翻新,我们能够调用UpdateManyAsync即可。比如大家要求将“counter”小于10的数量中的“counter”累加拾0,那么我们就能够像下边那样来写:

 

 

由此规范查询多条数据

var count = collection.CountAsync(new BsonDocument());
Console.WriteLine(count.Result);
 

获得链表

选用collection对象,大家得以将文书档案插入个中,比如上面包车型地铁json格式数据:

var firstDoc = collection.Find(new
BsonDocument()).FirstOrDefaultAsync();
Console.WriteLine(firstDoc.Result.ToString());
设若读者注意最终的出口,会发现一个_json,id字段,不过大家并从未加塞儿那个字段,那几个字段是mongoDB自动加入的,相信广大人都明白它的职能,那里就不详细解释额。

询问链表首条数据

然后我们使用collection对象的InsertOneAsync将方面包车型地铁数码插入在那之中:

为了拿走数据库,只须要调用MongoClient对象的GetDatabase方法,并传播数据库名称即可,假设数据仓库储存在则间接回到,不然就创立该数据库并赶回,比如上面包车型客车那段代码将创建名称叫“foo”的数据库:

 

http://mongodb.github.io/mongo-csharp-driver/2.0/getting\_started/quick\_tour/

倘诺要求壹回性插入几个文书档案,我们得以由此InsertManyAsync方法,比如上面包车型客车演示我们将插入100条数据:

var filter = Builders<BsonDocument>.Filter.Eq(“counter”, 71);
var document = collection.Find(filter).FirstAsync().Result;
Console.WriteLine(document);
此间咱们需求通过Builders的静态对象Filter中的各类口径方法来布局条件,然后在调用Find方法的将其传播即可。

 

总括文书档案数量

假设想将链表中兼有的数据都回到能够在Find操作之后调用ToListAsync方法就足以,将会向来回到List<T>类型的结果,比如上边包车型的士那段代码:

取得数据库

var filter = Builders<BsonDocument>.Filter.Exists(“counter”);
var sort = Builders<BsonDocument>.Sort.Descending(“counter”);
var documnt = collection.Find(filter).Sort(sort).FirstAsync().Result;
 

这一步骤跟ADO.NET连接受数据库的步调是壹致的,ADO.NET是采纳SqlConnection连接数据库,而MongoDB则选取MongoClient连接,并在构造函数团长连接字符传递进入,当然能够不传递,那么默许就是接2连③当地的总结机的私下认可端口(270壹7),比如下边包车型地铁二种连接方式:

透过上面包车型客车手续大家早就插入了十一条数据,倘若在骨子里付出中大家必要总计数据的数量就足以经过调用CountAsync方法,比如上边包车型大巴代码:

collection.InsertOneAsync(doc);
笔者们都理解Async为后缀的秘籍都以永葆异步的,但是小编是在控制台项目中示范的所以未有增加这么些await,假如读者实在其余的条件中测试的能够依照气象拉长。

有关于MongoDB的设置读者可以参见其余的博客,对于主题的上学来说并不必要进行过多的布局。

多多时候大家并不供给文书档案中的全体数据,那就好比在SQL中大家都会只把我们要求的数量select出来,而不会把表中的具有字段的数目都拿出来,自然MongoDB也得以让本人如此做,我们只需求跟过滤和排序1样采纳Projection构造器来构造然后传递给Project方法中就能够了,上面这么些例子中大家将免去“_id”字段:

 

var database = client.GetDatabase(“foo”);
当今database变量就本着了foo数据库了。

var projection =
Builders<BsonDocument>.Projection.Exclude(“_id”);
var document = collection.Find(new
BsonDocument()).Project(projection).FirstAsync().Result;
Console.WriteLine(document);
 

删除文书档案

 

上边大家选取BsonDocument对象组织地方的JSON格式的数量:

var documents = collection.Find(new
BsonDocument()).ToListAsync().Result;
本着数量较少的多寡情况下,下边那种格局是不曾难题,但假使大家须要处理多量的数量,那么大家就不能应用方面包车型客车这种办法,就需求利用上面的方法,通过ForEachAsync来形成,因为这么些方法会在每条数据再次回到的时候实施1个回调,从而完毕并发处理的指标,比如上边那段代码就演示了哪些利用:

var documents = Enumerable.Range(0, 100).Select(x => new
BsonDocument(“counter”, x));
collection.InsertManyAsync(documents);
 

立异文书档案

MongoDB拥有很多翻新操作,上边咱们将会介绍多少个大约的还要常用的换代操作。

 

 

var collection = database.GetCollection<BsonDocument>(“bar”);
作者们传入的泛型参数为BsonDocument,那一个是自带的,能够动态的容纳种种格式的数额,当然这里照旧建议读者使用POCO。

 

假定大家要求更新一个对象(若是基准不包容那么大概是0条),能够选拔UpdateOneAsync方法,并进行过滤条件和需求更新到的文书档案,比如下边大家将“counter”为1的数据中的“counter”更新为110:

我们能够在调用Find方法的时候传出1个过滤条件,从而在链表中查询大家期望的多寡,比如上面这么些例子我们将查询字段“counter”的值为7壹的数量:

创造连接

安排七个文书档案

当然大家也得以给定3个限量,比如50到70里面:

var filterBuilder = Builders<BsonDocument>.Filter;
var filter = filterBuilder.Gt(“counter”, 50) &
filterBuilder.Lt(“counter”, 70);
collection.Find(filter).ForEachAsync(x => Console.WriteLine(x));
 

 

var filter = Builders<BsonDocument>.Filter.Eq(“counter”, 1);
var updated = Builders<BsonDocument>.Update.Set(“counter”, 110);
var result = collection.UpdateOneAsync(filter, updated).Result;
 

询问链表中有着数据

 

var document = new BsonDocument
{
    {“name”,”MongoDB”},
    {“type”,”Database”},
   {“count”,1},
   {“info”,new BsonDocument{
         {“x”,203},
         {“y”,102}
       }
   }
};

1 var client = new MongoClient();
2
3 var client1 = new MongoClient(“mongodb://localhost:27017”);
4
5 var client2 = new
MongoClient(“mongodb://localhost:27017,localhost:27018,localhost:27019”);

那边运用的是mongoDB官网推荐使用.net驱动:

 

var filter = Builders<BsonDocument>.Filter.Gt(“counter”, 50);
var document = collection.Find(filter).ForEachAsync(x =>
Console.WriteLine(x));
 

 

相关文章

网站地图xml地图