MongoDB学习(翻译4)
- 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查询语句: (可用正则表达式):
- ToLower, ToLowerInvariant, ToUpper, ToUpperInvariant这些方法用于使文档对象的字符串字段或者属性转为相应的大小写模式
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)的更多相关文章
- MongoDB学习3
MongoDB学习(翻译3) 支持的where字句(比较多,今天先写一部分) 本节介绍支持的where字句 正如前面提到的,不是所有的C#表达式都支持where子句.您可以以此文为指导,或者你可以 ...
- MongoDB学习2
MongoDB学习(翻译2) C#驱动之LINQ教程 介绍 本教程涵盖了1.8发布版本对linq查询的支持. 开始本教程之前,你应该至少阅读下C#驱动教程关于C#驱动的介绍 快速开始 首先,添加下面命 ...
- MongoDB学习笔记二- Mongoose
MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- MongoDB学习笔记—Linux下搭建MongoDB环境
1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...
- Mongodb学习笔记一(Mongodb环境配置)
Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...
- MongoDB学习记录
一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...
- PHP操作MongoDB学习笔记
<?php/*** PHP操作MongoDB学习笔记*///*************************//** 连接MongoDB数据库 **////*************** ...
- MongoDB学习:(二)MongoDB简单使用
MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...
- MongoDB学习:(一)MongoDB安装
MongoDB学习:(一)MongoDB安装 MongoDB介绍: 直接百科了: MongoDB安装: 1:下载安装: MongoDB安装:https://www.mongodb.com/do ...
随机推荐
- .net设计模式之装饰模式
概述: 装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 装饰模式的特点: (1) 装饰对象和真实对象有相同的接口.这样 ...
- 私人定制javascript中函数小知识点
函数的定义 首先在javascript中,函数就是对象,程序可以随意操控它们.比如,可以给它们设置属性,甚至调用它们的方法.函数使用function关键字来定义.它既可以用在函数定义表达式,也可以用在 ...
- CSharp设计模式读书笔记(19):备忘录模式(学习难度:★★☆☆☆,使用频率:★★☆☆☆)
备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态.它是一种对象行为型模式,其别名为Tok ...
- 怎么会Sql serverW数据库模型图转化成ord于--您还可以查看属性信息字段
1. 于Sql server数据库,创建数据库模型图 -- Database Diagrams watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamN4NTA ...
- android ndk通过遍历和删除文件
在做移动开发过程,难免有些本地文件管理操作.例如,很常见app随着微博.微信要清除缓存功能,此功能是走app文件夹.然后删除所有缓存文件.使用java的File类能够实现本地文件遍历及删 ...
- jquery 直接调用 wcf,面向服务的SOA架构 ( 第二天)
在前面的基础上,我们来开始第二天编写 客户端 的东西,不过讲之前,我想告诉大家的是: 这个简单的SOA的架构,我们直接通过wcf 调用到 后台的方法, 而中间没有使用 C#代码,大大减少我们客户端的代 ...
- java中文件的相对路径以及jar中文件的读取
Java中File类的构造函数需要我们传入一个pathname,当我们传入以"/"开头的pathname表示绝对路径,其他均表示相对路径. 一:绝对路径名:是完整的路径名,不需要任 ...
- 第1章2节《MonkeyRunner源码剖析》概述:边界(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...
- HBuilder js 自定义代码块
=begin 本文档是HBuilder预置的js代码块的文件.注意不要把其他语言的设置放到js里来. 如果用户修改此文档,HBuilder升级后会覆盖用户的修改,建议进入菜单 工具→扩展代码块 扩展相 ...
- C# 根据年、月、周、星期获得日期等
原文:C# 根据年.月.周.星期获得日期等 /// 取得某月的第一天 /// </summary> /// <param name="datetime">要 ...