MongoDB 之 Find查询

Find查询是MongoDB中最基本也是最常用的语法。使用起来也非常简单。下面列出了Find的一些基本操作。
> db.news.find()   //select * from [news]
{ "_id" : 10001, "count" : 1, "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:40:58.034Z") }
{ "_id" : 10002, "count" : 2, "news" : "wow! it is very good!", "time" : ISODate("2011-09-05T13:41:57.860Z") }
{ "_id" : 10003, "count" : 3, "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:42:09.794Z") }
{ "_id" : 10004, "count" : 4, "news" : "wow! it is very good!", "time" : ISODate("2011-09-05T13:42:19.185Z") }
{ "_id" : 10005, "count" : 5, "news" : "new a good day", "time" : ISODate("2011-09-05T13:42:36.860Z") }
> db.news.findOne() //select top 1 * from [news]
{ "_id" : 10001, "count" : 1, "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:40:58.034Z") }
> db.news.find({"_id":10001,"count":1})  //select * from [news] where _id=10001 and count=1
{ "_id" : 10001, "count" : 1, "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:40:58.034Z") }
> db.news.find({"count":{"$gt":2,"$lte":4}})  //select * from [news] where count>2 and  count<=4
{ "_id" : 10003, "count" : 3, "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:42:09.794Z") }
{ "_id" : 10004, "count" : 4, "news" : "wow! it is very good!", "time" : ISODate("2011-09-05T13:42:19.185Z") }
> stime = new Date()
ISODate("2011-09-05T13:57:21.812Z")
> db.news.find({"time":{"$lt":stime}}) //select * from news where time<ISODate("2011-09-05T13:57:21.812Z")
{ "_id" : 10001, "count" : 1, "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:40:58.034Z") }
{ "_id" : 10002, "count" : 2, "news" : "wow! it is very good!", "time" : ISODate("2011-09-05T13:41:57.860Z") }
{ "_id" : 10003, "count" : 3, "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:42:09.794Z") }
{ "_id" : 10004, "count" : 4, "news" : "wow! it is very good!", "time" : ISODate("2011-09-05T13:42:19.185Z") }
{ "_id" : 10005, "count" : 5, "news" : "new a good day", "time" : ISODate("2011-09-05T13:42:36.860Z") }
> db.news.find({"count":{"$gt":2,"$lte":4}},{"_id":0,"time":1,"news":1}) // select time,news from [news] where count>2 and count<=4
{ "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:42:09.794Z") }
{ "news" : "wow! it is very good!", "time" : ISODate("2011-09-05T13:42:19.185Z") }
下面是对应的C#代码
FindAllAs<TDocument>()是一个泛型方法,可以用原生态BsonDocument和自定义类型News作为类型参数。MongoCursor<TDocument> FindAs<TDocument>(IMongoQuery query) 泛型查找,MongoCursor FindAs(Type, IMongoQuery)指定Type类型,并且两个方法都返回游标。而且MongoDB也提供Linq的查询操作。
MongoDB Find查询
 1       public   class  News
 2      {
 3           public   int  _id {  get set ; }
 4           public   int  count {  get set ; }
 5           public   string  news {  get set ; }
 6           public  DateTime time {  get set ; }
 7      }
 8 
 9  MongoCursor < BsonDocument >  allDoc  =  coll.FindAllAs < BsonDocument > ();
10  BsonDocument doc  =  allDoc.First();  // BsonDocument类型参数
11 
12  MongoCursor < News >  allNews  =  coll.FindAllAs < News > ();
13  News aNew  =  allNews.First();  // News类型参数
14 
15  News firstNews  =  coll.FindOneAs < News > ();  // 查找第一个文档
16 
17  QueryDocument query  =   new  QueryDocument();  // 定义查询文档
18  query.Add( " _id " 10001 );
19  query.Add( " count " 1 );
20  MongoCursor < News >  qNews  =  coll.FindAs < News > (query);
21 
22 
23  BsonDocument bd  =   new  BsonDocument(); // 定义查询文档 count>2 and count<=4
24  bd.Add( " $gt " 2 );
25  bd.Add( " $lte " 4 );
26  QueryDocument query_a  =   new  QueryDocument();
27  query_a.Add( " count " ,bd);
28 
29  FieldsDocument fd  =   new  FieldsDocument();
30  fd.Add( " _id " 0 );
31  fd.Add( " count " 1 );
32  fd.Add( " time " 1 );
33 
34  MongoCursor < News >  mNewss  =  coll.FindAs < News > (query_a).SetFields(fd); // 只返回count和time
35 
36  var time  =  BsonDateTime.Create( " 2011/9/5 23:26:00 " );
37  BsonDocument db_t  =   new  BsonDocument();
38  db_t.Add( " $gt " , time);
39  QueryDocument qd_3  =   new  QueryDocument();
40  qd_3.Add( " time " , db_t);
41 
42  MongoCursor < News >  mNews  =  coll.FindAs < News > (qd_3); //

如果要看更多,请访问我之前的 MongoDb系列文章
作者: Yoolo

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 

你可能感兴趣的:(mongodb)