设为首页 收藏本站
查看: 898|回复: 0

[经验分享] MongoDB学习(翻译4)

[复制链接]

尚未签到

发表于 2015-7-6 05:30:47 | 显示全部楼层 |阅读模式
  


接上篇。。。。。

  • EndsWith

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





var query =
    from c in collection.AsQueryable()
    where c.S.EndsWith("abc")
    select c;
// or

var query =
    collection.AsQueryable()
    .Where(c => c.S.EndsWith("abc"));
可转化为下面mongodb查询语句(使用了正则表达式)::





{ S : /abc$/ }

  • enum 比较 (==, !=, =)

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





public enum E { None, A, B };

var query =
    from c in collection.AsQueryable()
    where c.E == E.A
    select c;
// or

var query =
    collection.AsQueryable()
    .Where(c => c.E == E.A);
可转化为下面mongodb查询语句





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





{ E : "A" }

  • GetType (返回Type)

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





var query =
    from c in collection.AsQueryable()
    where c.GetType() == typeof(D)
    select c;
// or

var query =
    collection.AsQueryable()
    .Where(c => c.GetType() == typeof(D));
可大致转化为下面mongodb查询语句(取决于你创建鉴别器的方式)






{ _t : "D" }

  • In (LINQ to MongoDB 扩展方法)

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





var query =
    from c in collection.AsQueryable()
    where c.X.In(new [] { 1, 2, 3 })
    select c;
// or

var query =
    collection.AsQueryable()
    .Where(c.X.In(new [] { 1, 2, 3 }));
可转化为下面mongodb查询语句:





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

  • Inject

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



var query =
    from c in collection.AsQueryable()
    where c.X > 0 && Query.Type("X", BsonType.Int64).Inject()
    select c;
// or

var query =
    collection.AsQueryable() .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()
    where c is D && ((D)c).B == 1
    select c;
// or

var query =
    collection.AsQueryable()
    .Where(c => c is D && ((D)c).B == 1);
可大致转化为下面mongodb查询语句(取决于你创建鉴别器的方式)





{ _t : "D", B : 1 }

  • IsMatch (正则表达式方法)

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





var regex = new Regex("^abc");
var query =
    from c in collection.AsQueryable()
    where regex.IsMatch(c.S)
    select c;
// or

var query =
    collection.AsQueryable()
    .Where(c => regex.IsMatch(c.S));
可转化为下面mongodb查询语句:





{ S : /^abc/ }
也可以使用静态IsMatch方法:





var query =
    from c in collection.AsQueryable()
    where Regex.IsMatch(c.S, "^abc")
    select c;
// or

var query =
    collection.AsQueryable()
    .Where(c => Regex.IsMatch(c.S, "^abc"));
可转化为下面mongodb查询语句:





{ S : /^abc/ }

  • Length (数组集合长度)

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





var query =
    from c in collection.AsQueryable()
    where c.A.Length == 3
    select c;
// or

var query =
    collection.AsQueryable()
    .Where(c => c.A.Length == 3);
可转化为下面mongodb查询语句:

{ A : { $size: 3 } }



  • % (Mod运算符)

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





var query =
    from c in collection.AsQueryable()
    where c.X % 2 == 1
    select c;
// or

var query =
    collection.AsQueryable()
    .Where(c => c.X % 2 == 1);
可转化为下面mongodb查询语句:





{ X : { $mod : [2, 1] } }

  • ! (Not 操作符)

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





var query =
    from c in collection.AsQueryable()
    where !(c.X > 1)
    select c;
// or

var query =
    collection.AsQueryable()
    .Where(c => !(c.X > 1));
可转化为下面mongodb查询语句:





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

在c.X缺失或者不是数值类型时,!(c.X > 1)不等同于 (c.X  c.X == 0 && c.Y < 100);
可转化为下面mongodb查询语句:





{ X : 0, Y : { $lt : 100 } }

  • || (Or 运算符)

逻辑或运算,进行或比较





var query =
    from c in collection.AsQueryable()
    where c.X > 0 || c.Y > 0
    select c;
// or

var query =
    collection.AsQueryable()
    .Where(c => c.X > 0 || c.Y > 0);
可转化为下面mongodb查询语句:





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

  • StartsWith

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





var query =
    from c in collection.AsQueryable()
    where c.S.StartsWith("abc")
    select c;
// or

var query =
    collection.AsQueryable()
    .Where(c => c.S.StartsWith("abc"));
可转化为下面mongodb查询语句: (可用正则表达式):





{ S : /^abc/ }

  • ToLower, ToLowerInvariant, ToUpper, ToUpperInvariant这些方法用于使文档对象的字符串字段或者属性转为相应的大小写模式



    var query = from c in collection.AsQueryable()
     where c.S.ToLower() == "abc"
     select c;
// or

var query =
     collection.AsQueryable()
     .Where(c => c.S.ToLower() == "abc");
可转化为下面mongodb查询语句: (可用正则表达式):





    { S : /^abc$/i }


  

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-83467-1-1.html 上篇帖子: MongoDB随笔2:使用查询 下篇帖子: 第三节 MongoDB下samus源码初探
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表