惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
J
Java Code Geeks
H
Help Net Security
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
Stack Overflow Blog
Stack Overflow Blog
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
U
Unit 42
博客园 - 三生石上(FineUI控件)
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
小众软件
小众软件
博客园 - 叶小钗
D
Docker
量子位
P
Proofpoint News Feed
博客园_首页
T
Tailwind CSS Blog
F
Fortinet All Blogs

博客园 - forrestsun

问题整理 weedfs getsockopt: connection timed out 利用cubieboard设置samba打印服务器 CubieTruck上安装mjpg_streamer devexpress bandgridview使用总结(14.2) WeedFS0.6.8-引用库列表 NSQ的消息订阅发布测试 WeedFS问题收集 WeedFS依赖库 0.6.1 golang 前置补0 MongoDB-MMS使用总结 golang 格式化时间为字符串 格式化字符串为时间学习总结 mgo-后续测试(指定字段,获取id) mgo中DBRef-数据查询测试 mgo中DBRef-数据添加测试 weed-fs 基础测试 weed-fs 压力测试 weed-fs参数列表
mgo like的两种写法
forrestsun · 2013-09-12 · via 博客园 - forrestsun

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

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)
}