接上篇。。。。。
  • EndsWith

此方法用于测试文档对象的字符串类型的字段或者属性是否以某一个特定的字串结束

var query =

    from c in collection.AsQueryable<C>()

    where c.S.EndsWith("abc")

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.S.EndsWith("abc"));

可转化为下面mongodb查询语句(使用了正则表达式)::

{ S : /abc$/ }
  • enum 比较 (==!=<<=>>=)

枚举字段或者属性可以和同一种类型的枚举常量比较,其真正的比较是基于其底层整数的比较。

public enum E { None, A, B };

 

var query =

    from c in collection.AsQueryable<C>()

    where c.E == E.A

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.E == E.A);

可转化为下面mongodb查询语句

{ E : 1 } 

LINQ的实现需要考虑序列化后值得表示方式,所以如果你配置了映射类通过字符串而不是整数来存储枚举值,那么将产生下面的MongoDB查询语句:

{ E : "A" }
  • GetType (返回Type)

这个方法很像OfType方法,会创建一个鉴别器对结果进行更近一步筛选

var query =

    from c in collection.AsQueryable<C>()

    where c.GetType() == typeof(D)

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.GetType() == typeof(D));

可大致转化为下面mongodb查询语句(取决于你创建鉴别器的方式)

{ _t : "D" }
  • In (LINQ to MongoDB 扩展方法)

这个方法用于测试一个字段或者属性是否等于提供的一组值中的任何一个。

var query =

    from c in collection.AsQueryable<C>()

    where c.X.In(new [] { , ,  })

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c.X.In(new [] { , ,  }));

可转化为下面mongodb查询语句:

{ X : { $in : [1, 2, 3] } }
  • Inject

该方法是一个“伪方法”,用于把一个MongoDB查询注入到LINQ中,下面的查询查找大于0的64位整数。

var query =

    from c in collection.AsQueryable<C>()

    where c.X >  && Query.Type("X", BsonType.Int64).Inject()

    select c;

// or

var query =

    collection.AsQueryable<C>() .Where(c => c.X > 0 && Query.Type("X", BsonType.Int64).Inject());

可转化为下面mongodb查询语句:

{ X : { $gt : 0, $type : 18 } }
  • is C#关键字

和GetType方法一样,此处不在翻译

var query =

    from c in collection.AsQueryable<C>()

    where c is D && ((D)c).B == 

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c is D && ((D)c).B == );

可大致转化为下面mongodb查询语句(取决于你创建鉴别器的方式)

{ _t : "D", B : 1 }
  • IsMatch (正则表达式方法)

这个方法用于测试字符串类型的字段或者属性是否匹配一个正则表达式。

var regex = new Regex("^abc");

var query =

    from c in collection.AsQueryable<C>()

    where regex.IsMatch(c.S)

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => regex.IsMatch(c.S));

可转化为下面mongodb查询语句:

{ S : /^abc/ }

也可以使用静态IsMatch方法:

var query =

    from c in collection.AsQueryable<C>()

    where Regex.IsMatch(c.S, "^abc")

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => Regex.IsMatch(c.S, "^abc"));

可转化为下面mongodb查询语句:

  • Length (数组集合长度)

这个方法用于测试数组集合类型的字段或者属性是否存在一个特定数量的项。

var query =

    from c in collection.AsQueryable<C>()

    where c.A.Length == 

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.A.Length == );

可转化为下面mongodb查询语句:

{ A : { $size: 3 } }

  • % (Mod运算符)

这个方法用于对文档属性或者字段进行求余运算,下面查询匹配所有x属性为偶数的文档

var query =

    from c in collection.AsQueryable<C>()

    where c.X %  == 

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.X %  == );

可转化为下面mongodb查询语句:

{ X : { $mod : [2, 1] } }
  • ! (Not 操作符)

此方法用于对测试结果进行逻辑非操作

var query =

    from c in collection.AsQueryable<C>()

    where !(c.X > )

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => !(c.X > ));

可转化为下面mongodb查询语句:

{ X : { $not : { $gt : 1 } } }

注意:

在c.X缺失或者不是数值类型时,!(c.X > 1)不等同于 (c.X <= 1)

数值比较 (==, !=, <, <=, >, >=)

数值类型的字段或者属性可以使用上述任何一种比较方式

var query =

    from c in collection.AsQueryable<C>()

    where c.X ==  && c.Y < 

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.X ==  && c.Y < );

可转化为下面mongodb查询语句:

{ X : 0, Y : { $lt : 100 } }
  • || (Or 运算符)

逻辑或运算,进行或比较

var query =

    from c in collection.AsQueryable<C>()

    where c.X >  || c.Y > 

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.X >  || c.Y > );

可转化为下面mongodb查询语句:

{ $or : [{ X : { $gt : 0 } }, { Y : { $gt : 0 } }] }
  • StartsWith

这个方法用于测试文档对象的字符串字段或者属性是否以某个特定的子串开始

var query =

    from c in collection.AsQueryable<C>()

    where c.S.StartsWith("abc")

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.S.StartsWith("abc"));

可转化为下面mongodb查询语句: (可用正则表达式):

  • ToLowerToLowerInvariantToUpperToUpperInvariant这些方法用于使文档对象的字符串字段或者属性转为相应的大小写模式
    var query = from c in collection.AsQueryable<C>()

     where c.S.ToLower() == "abc"

     select c;

 // or

 var query =

     collection.AsQueryable<C>()

     .Where(c => c.S.ToLower() == "abc");

可转化为下面mongodb查询语句: (可用正则表达式):

    { S : /^abc$/i }

  

C#官方驱动LINQ查询部分结束,下篇C#官方驱动序列化文档对象待续

MongoDB学习(翻译4)的更多相关文章

  1. MongoDB学习3

    MongoDB学习(翻译3)   支持的where字句(比较多,今天先写一部分) 本节介绍支持的where字句 正如前面提到的,不是所有的C#表达式都支持where子句.您可以以此文为指导,或者你可以 ...

  2. MongoDB学习2

    MongoDB学习(翻译2) C#驱动之LINQ教程 介绍 本教程涵盖了1.8发布版本对linq查询的支持. 开始本教程之前,你应该至少阅读下C#驱动教程关于C#驱动的介绍 快速开始 首先,添加下面命 ...

  3. MongoDB学习笔记二- Mongoose

    MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...

  4. MongoDB学习笔记系列

    回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...

  5. MongoDB学习笔记—Linux下搭建MongoDB环境

    1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...

  6. Mongodb学习笔记一(Mongodb环境配置)

    Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...

  7. MongoDB学习记录

    一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...

  8. PHP操作MongoDB学习笔记

    <?php/*** PHP操作MongoDB学习笔记*///*************************//**   连接MongoDB数据库  **////*************** ...

  9. MongoDB学习:(二)MongoDB简单使用

    MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...

  10. MongoDB学习:(一)MongoDB安装

    MongoDB学习:(一)MongoDB安装 MongoDB介绍:     直接百科了: MongoDB安装: 1:下载安装: MongoDB安装:https://www.mongodb.com/do ...

随机推荐

  1. 【MySQL案件】mysql登录-S失败

    1.1.1. mysql登录mysql时间,-S参数失效 [环境的叙述性说明] mysql5.5.14 [问题叙述性说明] 配置多个实例 实例1 实例2 datadir /home/mysql_330 ...

  2. TS流文件

    简单介绍编辑 随着从HDTV录制的高清节目在网上的流传,烧友们对TS这个名词大概已经不陌生了.但随之而来就是怎样播放.怎样加入字幕等等的一系列问题.本文将重点介绍一下这方面的应用操作. 先来简要介绍一 ...

  3. DYNAMICRESOLUTION | NODYNAMICRESOLUTION

    有时候开启OGG进程的时候较慢,可能是由于须要同步的表太多,OGG在开启进程之前会将须要同步的表建立一个记录而且存入到磁盘中,这样就须要耗费大量的时间.OGG同一时候也提供了DYNAMICRESOLU ...

  4. linux_ubuntu12.04 卸载和安装mysql、远程访问、not allowed

    一: 安装mysql 卸载mysql 第一步 sudo apt-get autoremove --purge mysql-server-5.0 sudo apt-get remove mysql-se ...

  5. 【云图】如何制作全国KTV查询系统?

    原文:[云图]如何制作全国KTV查询系统? 摘要:本文以[唱吧]531麦霸音乐节为案例,详细解读了如何导入自有数据到高德云图,并进行检索和展示.最后,调起高德mobile地图来进行路线规划和周边查询. ...

  6. 它们的定义app.config中间section节点和在执行中使用

    如果现在我们需要在app.config一个节点的在下面的例子中,定义,我们需要如何进行操作? <configSections> <section name="integra ...

  7. 解决OUTLOOK 533错误问题

    OutLook中“553 sorry, that domain isn‘t in my list of allowed rcpthosts (#5.7.1)”,无法发送邮件错误,解决方法 最近我在给徐 ...

  8. 省钱加油(Fuel Economy)题解

    题目 农夫约翰决定去做一个环游国家旅行,为了不让他的奶牛们感到孤单,于是他决定租一辆货车带领他的奶牛们一起去旅行.这辆货车的油箱最多可以承载G 个单位的油,同时为了简化问题,规定每一个单位的油可以行使 ...

  9. ie6、ie7真的不支持inline-block吗?

    本来今天想出JavaScript继承的博文的,由于也才刚学习不久,以及工作比较忙,所以暂推两天写JavaScript的继承,喜欢的童鞋们关注我的博客哟! okay,言归正传.之前在接触前端的时候,处理 ...

  10. Node.js日志框架选型比較:Winston

    日志对于问题定位.调试,系统性能调优至关重要,尤其是系统复杂以及在线执行的情况下. 好的开发框架都会有一个可开启关闭/可配置记录级别的日志系统.我们从下面几个方面来做选型: 1. 每行日志都须要有准确 ...