实际上都是围绕正则来写的,看大家喜欢那种写法

package main

import (
"fmt"
"labix.org/v2/mgo"
"labix.org/v2/mgo/bson"
"time"
) type User struct {
Name string //用户名称
Key string //关键字
Modified time.Time //修改时间
} func main() {
str1 := "aaaaaaaaaaaaaaaaaaaaaaraaaaaaaaaaaaaa"
str2 := "bbbbbbbbbbbbbbbbbbbbbbbbbhbbbbbbbbbbb"
str3 := "xxxxxxxxxxxxxxxxxxxxx" session, err := mgo.Dial("localhost:27017")
if err != nil {
panic(err)
}
defer session.Close() c := session.DB("lsoa").C("users")
c.DropCollection()
for i := 0; i < 10; i++ {
if i%2 == 0 {
err = c.Insert(&User{fmt.Sprintf("cst%d", i), str1, time.Now()})
} else {
err = c.Insert(&User{fmt.Sprintf("est%d", i), str2, time.Now()})
}
}
err = c.Insert(&User{fmt.Sprintf("cest%d", 12), str3, time.Now()})
ac, err := c.Find(bson.M{}).Count()
//第一种写法
// query :=bson.M{"$or":[]bson.M{bson.M{"name": bson.M{"$regex": bson.RegEx{"ce", "i"}}},
// bson.M{"key": bson.M{"$regex": bson.RegEx{"x", "i"}}}}}   //第二种写法
regex1 := bson.RegEx{"ce", "i"}
regex2 := bson.RegEx{"x", "i"}

query := bson.M{"$or": []bson.M{bson.M{"name": regex1}, bson.M{"key": regex2}}}
fmt.Println(query)
count, err := c.Find(query).Count()
fmt.Printf("All Count: %d ,Filter count:%d", ac, count)
}

mgo like的两种写法的更多相关文章

  1. ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法

    ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法 语法 第一种: 通过使用Oracle语句块  --指定文档所有部门都能查看 declare cursor TABLE_DEPT and ...

  2. EF架构~linq模拟left join的两种写法,性能差之千里!

    回到目录 对于SQL左外连接我想没什么可说的,left join将左表数据都获出来,右表数据如果在左表中不存在,结果为NULL,而对于LINQ来说,要实现left join的效果,也是可以的,在进行j ...

  3. 运算符关键字。数据区别大小写。日期范围。判空的两种写法。NOT IN的两种写法。IN范围可含NULL,但NOT IN值范围不能含NULL。

    比较:>,<,=,>=,<=,<>(!=) 逻辑:AND,OR,NOT 范围:BETWEEN...AND... 范围:IN,NOT IN 判空:IS NULL, I ...

  4. 快速排序partition过程常见的两种写法+快速排序非递归实现

    这里不详细说明快速排序的原理,具体可参考here 快速排序主要是partition的过程,partition最常用有以下两种写法 第一种: int mypartition(vector<int& ...

  5. java 路径分隔符File.separator 以及 路径两种写法"/"和"\\"

    一.File.separator File file=new File(); 这句是新建一个文件.file.separator这个代表系统目录中的间隔符,说白了就是斜线,不过有时候需要双线,有时候是单 ...

  6. iOS中表视图单元格事件用nib和storyboard的两种写法总结

    从ios6开始,苹果公司推出了storyborad技术取代了nib的写法,这样代码量确实少写了很多,也比较简洁.但是,从学习的角度来说,阿堂认为 用nib的写法,虽然多了些代码,但是对于掌握知识和原理 ...

  7. linq和ef关于group by取最大值的两种写法

    LINQ: var temp = from p in db.jj_Credentials group p by p.ProfessionID into g select new { g.Key, Ma ...

  8. ThinkPHP中Widget的两种写法及调用

    Widget扩展一般用于页面组件的扩展,在页面根据需要输出不同的内容,下面介绍一下ThinkPHP中Widget的两种写法及调用 写法一: ArticlWidget.class.php文件: clas ...

  9. es6对象内函数的两种写法

    es6对象内函数一般有两种写法: var person1 = { name: "p1", sayThis() { console.log(this); } }; var perso ...

随机推荐

  1. 系统升级win7 sp1后,ado,MSJRO.tlh error 问题

    MSJRO.tlh() : error C2501: '_RecordsetPtr' : missing storage-class or type specifiers MSJRO.tlh() : ...

  2. Java源码分析(1):二分查找 + 循环递归实现

    源代码 源码地址 public static int binarySearch(int[] a, int key) { return binarySearch0(a, 0, a.length, key ...

  3. 阿里八八Alpha阶段Scrum(8/12)

    今日进度 叶文滔: 已经成功解决兼容性问题,目前正在嵌入多级按钮API,预计明天可以完成 王国超: 今天终于debug了,被卡了几天的fragment嵌套listview终于成功了 俞鋆: 研究了一下 ...

  4. Redis上踩过的一些坑

    来自: http://blog.csdn.net//chenleixing/article/details/50530419 上上周和同事(龙哥)参加了360组织的互联网技术训练营第三期,美团网的DB ...

  5. Sublime2 DocBlocker插件在自动补全注释时输出自定义作者和当前时间等信息

    Sublime在进行前端开发时非常棒,当然也少不了众多的插件支持,DocBlocker是在Sublime平台上开发一款自动补全代码插件,支持JavaScript (including ES6), PH ...

  6. BZOJ4340:[BJOI2015]隐身术(后缀数组,ST表,DFS)

    Description 给定两个串A,B.请问B中有多少个非空子串和A的编辑距离不超过K? 所谓“子串”,指的是B中连续的一段.不同位置的内容相同的子串算作多个. 两个串之间的“编辑距离”指的是把一个 ...

  7. WorldWind源码剖析系列:图像助手类ImageHelper

    图像助手类ImageHelper封装了对各种图像的操作.该类类图如下. 提供的主要处理方法基本上都是静态函数,简要描述如下: public static bool IsGdiSupportedImag ...

  8. Android 网络请求超时处理方案

    以用户登录为例介绍用户访问网络时的请求超时处理的两种方法: 1)使用android提供的工具类AsyncTask类,此类提供了一个AsyncTask.execute().get(timeout, un ...

  9. C. Sad powers

    You're given Q queries of the form (L, R). For each query you have to find the number of such x that ...

  10. cURL函数库错误码说明之PHP curl_errno函数

    背景概述:游戏接口是使用PHP cURL扩展进行请求操作.但是,被请求的服务器经常会无故的不响应或者超时.总之,就是请求之后收不到响应回来的数据.这时候可不能说对方API接口有问题,或者,服务器有故障 ...