子表达式能够经过&&合并来查询知足全部子表达式的文档正则表达式
var query =
from c in collection.AsQueryable<C>()
where c.X > 0 && c.Y > 0
select c; // or var query = collection.AsQueryable<C>() .Where(c => c.X > 0 && c.Y > 0);
//上面语句可转化为下述mongodb查询语句
{ X : { $gt : 0 }, Y : { $gt : 0 } }
在某些状况下咱们也能够使用$and操做符,以下面例子:查询c.X被2整除同时被3整除的文档对象:mongodb
var query =
from c in collection.AsQueryable<C>()
where (c.X % 2 == 0) && (c.X % 3 == 0) select c; // or var query = collection.AsQueryable<C>() .Where(c => (c.X % 2 == 0) && (c.X % 3 == 0));
//上面例子能够转化为下面使用了 $and的mongodb查询语句
{ $and : [{ X : { $mod : [2, 0] } }, { X : { $mod : [3, 0] } }] }
这个方法是用来测试集合中字段或属性是否包含任何项。测试
var query =
from c in collection.AsQueryable<C>()
where c.A.Any() select c; // or var query = collection.AsQueryable<C>() .Where(c => c.A.Any());
//若是A存在一个或者多个项,则会匹配。可转化为下面mongodb查询语句
{ A : { $ne : null, $not : { $size : 0 } } }
这个方法用来测试集合中全部项,它会产生一个$elemMatch条件:spa
var query =
from c in collection.AsQueryable<C>()
where c.A.Any(a => a.B == 1) select c; // or var query = collection.AsQueryable<C>() .Where(c => c.A.Any(a => a.B == 1));
//可转化为下面mongodb查询语句:
{ A : { $elemMatch : { B : 1 } } }
这种形式主要是完整性。你可能会使用不多。它使用一个布尔常数来匹配或不匹配文档。code
var query =
from c in collection.AsQueryable<C>()
where true
select c; // or var query = collection.AsQueryable<C>() .Where(c => true);
//可转化为下面mongodb查询语句:
{ _id : { $exists : true } }
匹配全部文档,由于_id是必填字段对象
一个布尔值的字段或属性的文档没有必要和true进行比较,由于它自己已经在where的时候隐式的和true进行了比较。blog
var query =
from c in collection.AsQueryable<C>()
where c.B select c; // or var query = collection.AsQueryable<C>() .Where(c => c.B);
//可转化为下面mongodb查询语句:
{ B : true }
根据上下文这个方法有两种用法文档
1.测试一个集合中的字段或者属性是否包含一个特定的值:字符串
var query =
from c in collection.AsQueryable<C>()
where c.A.Contains(123) select c; // or var query = collection.AsQueryable<C>() .Where(c => c.A.Contains(123));
//可转化为下面mongodb查询语句:
{ A : 123 }
2.测试一个字段或者属性是否包含在一个集合中io
var local = new [] { 1, 2, 3 };
var query =
from c in collection.AsQueryable<C>() where local.Contains(c.A) select c; // or var query = collection.AsQueryable<C>() .Where(c => local.Contains(c.A));
//可转化为下面mongodb查询语句:
{ A : { $in : [1, 2, 3] } }
这个方法用来筛选对象字符串类型的字段或者属性是否包含一个特定的子串:
var query =
from c in collection.AsQueryable<C>()
where c.S.Contains("abc") select c; // or var query = collection.AsQueryable<C>() .Where(c => c.S.Contains("abc"));
//可转化为下面mongodb查询语句:(使用正则表达式):
{ S : /abc/ }
这个方法用于筛选集合中项字段或者属性是否包含提供的全部值:
var query =
from c in collection.AsQueryable<C>()
where c.A.ContainsAll(new[] { 1, 2, 3 }) select c; // or var query = collection.AsQueryable<C>() .Where(c => c.A.ContainsAll(new[] { 1, 2, 3 }));
//可转化为下面mongodb查询语句:
{ A : { $all : [1, 2, 3] } }
这个方法用于筛选集合中项的字段或者属性是否包含任何一个提供的值:
var query =
from c in collection.AsQueryable<C>()
where c.A.ContainsAny(new[] { 1, 2, 3 }) select c; // or var query = collection.AsQueryable<C>() .Where(c => c.A.ContainsAny(new[] { 1, 2, 3 }));
//可转化为下面mongodb查询语句:
{ A : { $in : [1, 2, 3] } }
该方法用于筛选一个可枚举的含有特定数量项的字段或者属性。
var query =
from c in collection.AsQueryable<C>()
where c.L.Count() == 3
select c; // or var query = collection.AsQueryable<C>() .Where(c => c.L.Count() == 3);
//可转化为下面mongodb查询语句:
{ L : { $size: 3 } }