golang使用mgo操作mongoDB遇到奇葩问题,求教
答案:1 悬赏:30 手机版
解决时间 2021-02-15 12:38
- 提问者网友:感性作祟
- 2021-02-14 14:21
golang使用mgo操作mongoDB遇到奇葩问题,求教
最佳答案
- 五星知识达人网友:英雄的欲望
- 2021-02-14 15:32
package main
import (
"fmt"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
type DB struct {
Session *mgo.Session
Collection *mgo.Collection
}
type Digapp struct {
App_id string
Fetch_url string
From string //
Fetch_state bool
Fetch_priority int32 //
Create_time int64 //
Invalid bool // + app is access now ?
}
func main() {
db := new(DB)
if err := db.DBInit(); err != nil {
fmt.Println("初始化数据库失败!错误为:" + err.Error())
return
}
defer db.Close()
var digapp Digapp
//selector := bson.M{"fetch_priority": 5, "invalid": false}
//selector := bson.M{"fetch_priority": 5, "from": bson.M{"$ne": "dig"}, "invalid": false}
selector := bson.M{"from": "KeywordsSearch"}
db.SetCollection("digapp")
iter := db.GetIter(nil, selector)
for iter.Next(&digapp) {
fmt.Println(digapp)
}
}
func (db *DB) DBInit() error {
var err error
db.Session, err = mgo.DialWithInfo(&mgo.DialInfo{Addrs: []string{MongoDBUrl}, Username: Username, Password: Password})
if err == nil {
db.Session.SetSafe(&mgo.Safe{WMode: WMode})
}
return err
}
func (db *DB) Close() {
db.Session.Close()
}
func (db *DB) SetCollection(collection string) {
db.Collection = db.Session.DB(MongoDBName).C(collection)
}
func (db *DB) GetIter(condition interface{}, selector bson.M, sortor ...string) *mgo.Iter {
return db.Collection.Find(condition).Select(selector).Iter()
}
当使用selector := bson.M{"fetch_priority": 5, "invalid": false}时,输出的是正确抓取到的值;
当使用selector := bson.M{"fetch_priority": 5, "from": bson.M{"$ne": "dig"}, "invalid": false}时,什么都抓不到(没有任何输出信息);
当使用selector := bson.M{"from": "KeywordsSearch"}时,输出的是{ KeywordsSearch false 0 0 false}。
真是奇哉怪也.搞了一早上搞得头大也没弄清楚到底是什么状况。
import (
"fmt"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
type DB struct {
Session *mgo.Session
Collection *mgo.Collection
}
type Digapp struct {
App_id string
Fetch_url string
From string //
Fetch_state bool
Fetch_priority int32 //
Create_time int64 //
Invalid bool // + app is access now ?
}
func main() {
db := new(DB)
if err := db.DBInit(); err != nil {
fmt.Println("初始化数据库失败!错误为:" + err.Error())
return
}
defer db.Close()
var digapp Digapp
//selector := bson.M{"fetch_priority": 5, "invalid": false}
//selector := bson.M{"fetch_priority": 5, "from": bson.M{"$ne": "dig"}, "invalid": false}
selector := bson.M{"from": "KeywordsSearch"}
db.SetCollection("digapp")
iter := db.GetIter(nil, selector)
for iter.Next(&digapp) {
fmt.Println(digapp)
}
}
func (db *DB) DBInit() error {
var err error
db.Session, err = mgo.DialWithInfo(&mgo.DialInfo{Addrs: []string{MongoDBUrl}, Username: Username, Password: Password})
if err == nil {
db.Session.SetSafe(&mgo.Safe{WMode: WMode})
}
return err
}
func (db *DB) Close() {
db.Session.Close()
}
func (db *DB) SetCollection(collection string) {
db.Collection = db.Session.DB(MongoDBName).C(collection)
}
func (db *DB) GetIter(condition interface{}, selector bson.M, sortor ...string) *mgo.Iter {
return db.Collection.Find(condition).Select(selector).Iter()
}
当使用selector := bson.M{"fetch_priority": 5, "invalid": false}时,输出的是正确抓取到的值;
当使用selector := bson.M{"fetch_priority": 5, "from": bson.M{"$ne": "dig"}, "invalid": false}时,什么都抓不到(没有任何输出信息);
当使用selector := bson.M{"from": "KeywordsSearch"}时,输出的是{ KeywordsSearch false 0 0 false}。
真是奇哉怪也.搞了一早上搞得头大也没弄清楚到底是什么状况。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯