• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Golang db.EvalQuery函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Golang中github.com/HouzuoGuo/tiedot/db.EvalQuery函数的典型用法代码示例。如果您正苦于以下问题:Golang EvalQuery函数的具体用法?Golang EvalQuery怎么用?Golang EvalQuery使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了EvalQuery函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。

示例1: GetByIpPort

func (ps *ProxyStorage) GetByIpPort(ip string, port int) (Proxy, error) {
	var query interface{}
	queryString := fmt.Sprintf(`[{"eq" : "%s", "in" : ["Ip"] },{"eq" : "%n", "in" : ["Port"] }]`, ip, port)
	json.Unmarshal([]byte(queryString), &query)
	queryResult := make(map[int]struct{}) // query result (document IDs) goes into map keys
	var proxy Proxy
	if err := db.EvalQuery(query, ps.proxyCol, &queryResult); err != nil {
		logger.Errf("Error while query eval : %s. Error : %s", query, err)
		return proxy, err
	}

	if len(queryResult) == 0 {
		return proxy, errors.New("No proxy found")
	}

	for k, _ := range queryResult {
		//expecting single key
		r, err := ps.proxyCol.Read(k)
		if err != nil {
			return proxy, err
		}
		err = mapstructure.Decode(r, &proxy)
		if err != nil {
			return proxy, err
		}
	}
	return proxy, nil
}
开发者ID:pomkine,项目名称:weasel,代码行数:28,代码来源:db.go


示例2: benchmark

// Document CRUD benchmark (insert/read/query/update/delete), intended for catching performance regressions.
func benchmark() {
	ids := make([]int, 0, benchSize)
	// Prepare a collection with two indexes
	tmp := "/tmp/tiedot_bench"
	os.RemoveAll(tmp)
	if benchCleanup {
		defer os.RemoveAll(tmp)
	}
	benchDB, col := mkTmpDBAndCol(tmp, "tmp")
	defer benchDB.Close()
	col.Index([]string{"nested", "nested", "str"})
	col.Index([]string{"nested", "nested", "int"})
	col.Index([]string{"nested", "nested", "float"})
	col.Index([]string{"strs"})
	col.Index([]string{"ints"})
	col.Index([]string{"floats"})

	// Benchmark document insert
	average("insert", func() {
		if _, err := col.Insert(sampleDoc()); err != nil {
			fmt.Println("Insert error", err)
		}
	})

	// Collect all document IDs and benchmark document read
	col.ForEachDoc(func(id int, _ []byte) bool {
		ids = append(ids, id)
		return true
	})
	average("read", func() {
		doc, err := col.Read(ids[rand.Intn(benchSize)])
		if doc == nil || err != nil {
			fmt.Println("Read error", doc, err)
		}
	})

	// Benchmark lookup query (two attributes)
	average("lookup", func() {
		result := make(map[int]struct{})
		if err := db.EvalQuery(sampleQuery(), col, &result); err != nil {
			fmt.Println("Query error", err)
		}
	})

	// Benchmark document update
	average("update", func() {
		if err := col.Update(ids[rand.Intn(benchSize)], sampleDoc()); err != nil {
			fmt.Println("Update error", err)
		}
	})

	// Benchmark document delete
	var delCount int64
	average("delete", func() {
		if err := col.Delete(ids[rand.Intn(benchSize)]); err == nil {
			atomic.AddInt64(&delCount, 1)
		}
	})
	fmt.Printf("Deleted %d documents\n", delCount)
}
开发者ID:marble58,项目名称:tiedot,代码行数:61,代码来源:benchmark.go


示例3: SearchQuestionListByCourseId

func SearchQuestionListByCourseId(res http.ResponseWriter, req *http.Request) string {
	courseId := req.URL.Query()["courseId"]
	fmt.Println(courseId)

	var query interface{}
	json.Unmarshal([]byte(`[{"eq": "`+courseId[0]+`", "in": ["courseId"]}]`), &query)

	queryResult := make(map[int]struct{}) // query result (document IDs) goes into map keys

	if err := db.EvalQuery(query, qlCl, &queryResult); err != nil {
		panic(err)
	}

	fmt.Println("result length", len(queryResult))

	questionList := make([]map[string]interface{}, 0)
	for docId, _ := range queryResult {
		// Read document
		var readBack map[string]interface{}
		var err error
		if readBack, err = qlCl.Read(docId); err != nil {
			return "questionList not found"
		}
		readBack["questionListId"] = string(strconv.AppendInt(nil, int64(docId), 10))
		fmt.Println("read data", readBack)
		questionList = append(questionList, readBack)
	}

	ret, _ := json.Marshal(questionList)
	res.WriteHeader(http.StatusOK)
	return string(ret)
}
开发者ID:rleiwang,项目名称:ars,代码行数:32,代码来源:server.go


示例4: GetBandsByGenre

func GetBandsByGenre(id string) []DocWithID {
	database := GetDB()
	defer database.Close()
	collection := database.Use(tiedotmartini2.BAND_COL)
	var query interface{}
	//	id2, _ := strconv.ParseInt(id, 10, 64)
	q := `{"in": ["albums", "genre_id"], "eq": "` + id + `"}`
	//	json.Unmarshal([]byte(`"all"`), &query)
	err := json.Unmarshal([]byte(q), &query)
	if err != nil {
		fmt.Println("Unmarshall error on genre search:", err)
	}
	result := make(map[uint64]struct{})
	err = db.EvalQuery(query, collection, &result)
	if err != nil {
		fmt.Println("Eval error:", err)
		os.Exit(1)
	}
	fmt.Println("Ran query")
	var docs []DocWithID
	for id2 := range result {
		fmt.Println("Found", id2)
		var readback map[string]interface{}
		collection.Read(id2, &readback)
		doc := DocWithID{DocKey: id2, Value: readback}
		docs = append(docs, doc)
	}
	if docs == nil {
		fmt.Println("Returning empty value")
	}
	return docs
}
开发者ID:jmptrader,项目名称:TiedotMartini2,代码行数:32,代码来源:base.go


示例5: GetAll

func GetAll() (pastes []Paste) {
	myDB, err1 := GetDb()
	if err1 != nil {
		log.Fatal("Error on database start - GetAll():", err1)
	}
	col := myDB.Use(PASTES)
	var query interface{}
	result := make(map[int]struct{})
	err := json.Unmarshal([]byte(`"all"`), &query)
	//	err := json.Unmarshal([]byte(`{"limit": 5}`), &query)
	if err != nil {
		log.Fatal("json error:", err)
	}
	db.EvalQuery(query, col, &result)
	var docs []Paste
	for id := range result {

		doc, _ := col.Read(id)
		theTime, _ := time.Parse(time.RFC3339, doc[CREATED].(string))
		docObj := Paste{Id: id, Title: doc[TITLE].(string), Content: doc[CONTENT].(string), CreatedOn: theTime}
		docs = append(docs, docObj)
	}
	sort.Sort(ByCreated(docs))
	q := docs[0:5]
	return q
}
开发者ID:ozonesurfer,项目名称:gopastebin2,代码行数:26,代码来源:respository.go


示例6: SaveProxy

func (ps *ProxyStorage) SaveProxy(toSave *Proxy, update bool) (int, error) {
	logger.Tracef("Saving proxy to storage: %s", toSave)

	var query interface{}

	queryString := fmt.Sprintf(`[{"eq" : "%s", "in" : ["Ip"] },{"eq" : "%n", "in" : ["Port"] }]`, toSave.Ip, toSave.Port)
	json.Unmarshal([]byte(queryString), &query)

	queryResult := make(map[int]struct{}) // query result (document IDs) goes into map keys

	if err := db.EvalQuery(query, ps.proxyCol, &queryResult); err != nil {
		panic(err)
	}

	if len(queryResult) > 0 {
		logger.Tracef("Exists in database: %s", toSave)
		if update {
			logger.Tracef("Updating %s", toSave)
			for k, _ := range queryResult {
				//expecting single key
				return k, ps.proxyCol.Update(k, structs.Map(toSave))
			}
		}
	}
	return ps.proxyCol.Insert(structs.Map(toSave))
}
开发者ID:pomkine,项目名称:weasel,代码行数:26,代码来源:db.go


示例7: Count

// Execute a query and return number of documents from the result.
func Count(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Cache-Control", "must-revalidate")
	w.Header().Set("Content-Type", "text/plain")
	var col, q string
	if !Require(w, r, "col", &col) {
		return
	}
	if !Require(w, r, "q", &q) {
		return
	}
	var qJson interface{}
	if err := json.Unmarshal([]byte(q), &qJson); err != nil {
		http.Error(w, fmt.Sprintf("'%v' is not valid JSON.", q), 400)
		return
	}
	dbcol := HttpDB.Use(col)
	if dbcol == nil {
		http.Error(w, fmt.Sprintf("Collection '%s' does not exist.", col), 400)
		return
	}
	queryResult := make(map[int]struct{})
	if err := db.EvalQuery(qJson, dbcol, &queryResult); err != nil {
		http.Error(w, fmt.Sprint(err), 400)
		return
	}
	w.Write([]byte(strconv.Itoa(len(queryResult))))
}
开发者ID:marble58,项目名称:tiedot,代码行数:28,代码来源:query.go


示例8: All

func (t *TiedotEngine) All(collectionName string) (map[uint64]struct{}, error) {
	r := make(map[uint64]struct{})
	if err := tiedot.EvalQuery("all", t.tiedot.Use(collectionName), &r); err != nil {
		log.Error("Error executing TiedotEngine.All() err=%s", err.Error())
		return nil, err
	}
	return r, nil
}
开发者ID:ryansb,项目名称:legowebservices,代码行数:8,代码来源:tiedot.go


示例9: getJWT

// Verify user identity and hand out a JWT.
func getJWT(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Type", "application/json")
	addCommonJwtRespHeaders(w, r)
	// Verify identity
	user := r.FormValue(JWT_USER_ATTR)
	if user == "" {
		http.Error(w, "Please pass JWT 'user' parameter", http.StatusBadRequest)
		return
	}
	jwtCol := HttpDB.Use(JWT_COL_NAME)
	if jwtCol == nil {
		http.Error(w, "Server is missing JWT identity collection, please restart the server.", http.StatusInternalServerError)
		return
	}
	userQuery := map[string]interface{}{
		"eq": user,
		"in": []interface{}{JWT_USER_ATTR}}
	userQueryResult := make(map[int]struct{})
	if err := db.EvalQuery(userQuery, jwtCol, &userQueryResult); err != nil {
		tdlog.CritNoRepeat("Query failed in JWT identity collection : %v", err)
		http.Error(w, "Query failed in JWT identity collection", http.StatusInternalServerError)
		return
	}
	// Verify password
	pass := r.FormValue(JWT_PASS_ATTR)
	for recID := range userQueryResult {
		rec, err := jwtCol.Read(recID)
		if err != nil {
			break
		}
		if rec[JWT_PASS_ATTR] != pass {
			tdlog.CritNoRepeat("JWT: identitify verification failed from request sent by %s", r.RemoteAddr)
			break
		}
		// Successful password match
		token := jwt.New(jwt.GetSigningMethod("RS256"))
		token.Claims = jwt.MapClaims{
			JWT_USER_ATTR:        rec[JWT_USER_ATTR],
			JWT_COLLECTIONS_ATTR: rec[JWT_COLLECTIONS_ATTR],
			JWT_ENDPOINTS_ATTR:   rec[JWT_ENDPOINTS_ATTR],
			JWT_EXPIRY:           time.Now().Add(time.Hour * 72).Unix(),
		}
		var tokenString string
		var e error
		if tokenString, e = token.SignedString(privateKey); e != nil {
			panic(e)
		}
		w.Header().Set("Authorization", "Bearer "+tokenString)
		w.WriteHeader(http.StatusOK)
		return
	}
	// ... password mismatch
	http.Error(w, "Invalid password", http.StatusUnauthorized)
}
开发者ID:HouzuoGuo,项目名称:tiedot,代码行数:55,代码来源:jwt.go


示例10: Query

func (repo *GenericRepository) Query(query interface{}) []GenericModel {
	col := repo.database.Use(repo.coll)
	result := make(map[int]struct{})
	if err := db.EvalQuery(query, col, &result); err != nil {
		panic(err)
	}

	generics := make([]GenericModel, 0)
	for id := range result {
		generics = append(generics, repo.Fetch(id))
	}

	return generics
}
开发者ID:Term1nal,项目名称:squircy2,代码行数:14,代码来源:model.go


示例11: Query

func (tdb *DBTiedot) Query(col, querystr string) ([]byte, error) {

	var query interface{}
	var data []interface{}

	json.Unmarshal([]byte(querystr), &query)
	queryResult := make(map[uint64]struct{})

	colh := tdb.Db.Use(col)

	if err := tiedot.EvalQuery(query, colh, &queryResult); err != nil {
		return nil, err
	}

	for id := range queryResult {
		var intf interface{}
		var subintf interface{}
		_, err := colh.Read(id, &intf)
		if err != nil {
			fmt.Println("Read back failed ", err)
		}

		//FIXME: wtf do we have to do this?
		//fmt.Println("Value of: %s\n",reflect.ValueOf(intf))
		val := reflect.ValueOf(intf)
		keys := val.MapKeys()
		for k := range keys {
			if strings.Contains(keys[k].String(), "id") {
				continue
			}
			fmt.Println("We want uuid: ", keys[k].String())
			subintf = val.MapIndex(keys[k]).Interface()
			data = append(data, subintf)
		}
		//subintf = val.Elem(;

	}

	dataBytes, err := json.Marshal(data)
	if err != nil {
		fmt.Println("Failed to marshal interface{} to raw []bytes: ", err)
		return nil, err
	}

	return dataBytes, nil

}
开发者ID:jamesunger,项目名称:seed,代码行数:47,代码来源:tiedot.go


示例12: Query

func Query(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Cache-Control", "must-revalidate")
	w.Header().Set("Content-Type", "text/plain")
	var col, q string
	if !Require(w, r, "col", &col) {
		return
	}
	if !Require(w, r, "q", &q) {
		return
	}
	var qJson interface{}
	if err := json.Unmarshal([]byte(q), &qJson); err != nil {
		http.Error(w, fmt.Sprintf("'%v' is not valid JSON.", q), 400)
		return
	}
	V3Sync.RLock()
	defer V3Sync.RUnlock()
	dbcol := V3DB.Use(col)
	if dbcol == nil {
		http.Error(w, fmt.Sprintf("Collection '%s' does not exist.", col), 400)
		return
	}
	// Evaluate the query
	queryResult := make(map[uint64]struct{})
	if err := db.EvalQuery(qJson, dbcol, &queryResult); err != nil {
		http.Error(w, fmt.Sprint(err), 400)
		return
	}
	// Construct array of result
	resultDocs := make([]map[string]interface{}, len(queryResult))
	counter := 0
	for docID := range queryResult {
		var doc map[string]interface{}
		dbcol.Read(docID, &doc)
		if doc != nil {
			resultDocs[counter] = doc
			counter++
		}
	}
	// Serialize the array
	resp, err := json.Marshal(resultDocs)
	if err != nil {
		http.Error(w, fmt.Sprintf("Server error: query returned invalid structure"), 500)
		return
	}
	w.Write([]byte(string(resp)))
}
开发者ID:jbenet,项目名称:tiedot,代码行数:47,代码来源:query.go


示例13: GetAll

func GetAll(docType string) []DocWithID {
	database := GetDB()
	defer database.Close()
	collection := database.Use(docType)
	var query interface{}
	result := make(map[uint64]struct{})
	json.Unmarshal([]byte(`"all"`), &query)
	db.EvalQuery(query, collection, &result)
	var docs []DocWithID
	for id := range result {
		var doc MyDoc
		collection.Read(id, &doc)
		docObj := DocWithID{DocKey: id, Value: doc}
		docs = append(docs, docObj)
	}
	return docs
}
开发者ID:jmptrader,项目名称:TiedotMartini2,代码行数:17,代码来源:base.go


示例14: GetUserForNick

func (ds *DataStore) GetUserForNick(nick string) (recs []Record, err error) {
	query := createQuery(nick, "nick")

	queryResult := make(map[uint64]struct{})
	err = db.EvalQuery(query, ds.users, &queryResult)
	if err != nil {
		return
	}

	if len(queryResult) == 0 {
		err = errors.New("No User Found")
		return
	}

	recs = ds.getUsersForIDs(queryResult)
	return

}
开发者ID:voldyman,项目名称:GILL,代码行数:18,代码来源:datastore.go


示例15: home

func home(w http.ResponseWriter, req *http.Request) {
	// local vars
	var query interface{}
	entries := Entries{}
	queryResults := make(map[int]struct{})

	// open database
	d, err := db.OpenDB(DBdir)

	if err != nil {
		panic(err)
	}

	// use collection
	docEntries := d.Use("Entries")

	// build query from json and convert to interface{}
	json.Unmarshal([]byte(`"all"`), &query)

	// execute query and pass results to queryResults
	if err := db.EvalQuery(query, docEntries, &queryResults); err != nil {
		panic(err)
	}

	// queryResults contains []int of IDs
	for id := range queryResults {
		entry := Entry{}

		readBack, _ := docEntries.Read(id)

		// map[string]interface{} TO struct hack

		j, _ := json.Marshal(readBack) // struct to json
		json.Unmarshal(j, &entry)      // json to actual type

		entries = append(entries, &entry)
	}

	// compile template with data
	if err := index.Execute(w, entries); err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
	}
}
开发者ID:jancarloviray,项目名称:go-adventures,代码行数:43,代码来源:main.go


示例16: lookupUser

// Lookup the user record for the given email address
func lookupUser(users *db.Col, email string) dbRow {

	var query interface{}

	queryStr := `{"eq": "` + email + `", "in": ["Email"]}`
	json.Unmarshal([]byte(queryStr), &query)
	queryResult := make(map[int]struct{})

	if err := db.EvalQuery(query, users, &queryResult); err != nil {
		panic(err)
	}

	for id := range queryResult {
		results, err := users.Read(id)
		if err != nil {
			panic(err)
		}
		return results
	}
	return nil
}
开发者ID:steveoc64,项目名称:ksm,代码行数:22,代码来源:rego.go


示例17: jwtInitSetup

// If necessary, create the JWT identity collection, indexes, and the default/special user identity "admin".
func jwtInitSetup() {
	// Create collection
	if HttpDB.Use(JWT_COL_NAME) == nil {
		if err := HttpDB.Create(JWT_COL_NAME); err != nil {
			tdlog.Panicf("JWT: failed to create JWT identity collection - %v", err)
		}
	}
	jwtCol := HttpDB.Use(JWT_COL_NAME)
	// Create indexes on ID attribute
	indexPaths := make(map[string]struct{})
	for _, oneIndex := range jwtCol.AllIndexes() {
		indexPaths[strings.Join(oneIndex, db.INDEX_PATH_SEP)] = struct{}{}
	}
	if _, exists := indexPaths[JWT_USER_ATTR]; !exists {
		if err := jwtCol.Index([]string{JWT_USER_ATTR}); err != nil {
			tdlog.Panicf("JWT: failed to create collection index - %v", err)
		}
	}
	// Create default user "admin"
	adminQuery := map[string]interface{}{
		"eq": JWT_USER_ADMIN,
		"in": []interface{}{JWT_USER_ATTR}}
	adminQueryResult := make(map[int]struct{})
	if err := db.EvalQuery(adminQuery, jwtCol, &adminQueryResult); err != nil {
		tdlog.Panicf("JWT: failed to query admin user ID - %v", err)
	}
	if len(adminQueryResult) == 0 {
		if _, err := jwtCol.Insert(map[string]interface{}{
			JWT_USER_ATTR:        JWT_USER_ADMIN,
			JWT_PASS_ATTR:        "",
			JWT_COLLECTIONS_ATTR: []interface{}{},
			JWT_ENDPOINTS_ATTR:   []interface{}{}}); err != nil {
			tdlog.Panicf("JWT: failed to create default admin user - %v", err)
		}
		tdlog.Notice("JWT: successfully initialized DB for JWT features. The default user 'admin' has been created.")
	}
}
开发者ID:Lanzafame,项目名称:tiedot,代码行数:38,代码来源:jwt.go


示例18: Query

func (self *Database) Query(colName string, query Query, result interface{}) error {

	resultv := reflect.ValueOf(result)
	if resultv.Kind() != reflect.Ptr || resultv.Elem().Kind() != reflect.Slice {
		panic("result argument must be a slice address")
	}
	slicev := resultv.Elem()
	//slicev = slicev.Slice(0, slicev.Cap())
	elemt := slicev.Type().Elem()
	col := self.db.Use(colName)

	var out []Query

	for k, v := range query {
		q := Query{}
		q["eq"] = v
		q["in"] = []string{k}
		out = append(out, q)
	}

	queryResult := make(map[int]struct{}) // query result (document IDs) goes into map keys
	if err := db.EvalQuery(out, col, &queryResult); err != nil {
		return err
	}
	fmt.Printf("%v", queryResult)
	for id := range queryResult {
		elemp := reflect.New(elemt)
		if err := self.Get(colName, fmt.Sprintf("%d", id), elemp.Interface()); err != nil {
			return err
		}
		slicev = reflect.Append(slicev, elemp.Elem())
	}

	return nil

}
开发者ID:kildevaeld,项目名称:projects,代码行数:36,代码来源:_database.go


示例19: TestAll


//.........这里部分代码省略.........
	if err := myDB.Scrub("Feeds"); err != nil {
		t.Fatal(err)
	}

	feeds := myDB.Use("Feeds")
	docID, err := feeds.Insert(map[string]interface{}{
		"name": "Go 1.2 is released",
		"url":  "golang.org"})
	if err != nil {
		t.Fatal(err)
	}
	readBack, err := feeds.Read(docID)
	if err != nil {
		t.Fatal(err)
	}
	if !sameMap(readBack, map[string]interface{}{
		"name": "Go 1.2 is released",
		"url":  "golang.org"}) {
		t.Fatal(readBack)
	}
	err = feeds.Update(docID, map[string]interface{}{
		"name": "Go is very popular",
		"url":  "google.com"})
	if err != nil {
		panic(err)
	}
	feeds.ForEachDoc(func(id int, docContent []byte) (willMoveOn bool) {
		var doc map[string]interface{}
		if json.Unmarshal(docContent, &doc) != nil {
			t.Fatal("cannot deserialize")
		}
		if !sameMap(doc, map[string]interface{}{
			"name": "Go is very popular",
			"url":  "google.com"}) {
			t.Fatal(doc)
		}
		return true
	})
	if err := feeds.Delete(docID); err != nil {
		t.Fatal(err)
	}
	if err := feeds.Delete(docID); dberr.Type(err) != dberr.ErrorNoDoc {
		t.Fatal(err)
	}

	if err := feeds.Index([]string{"author", "name", "first_name"}); err != nil {
		t.Fatal(err)
	}
	if err := feeds.Index([]string{"Title"}); err != nil {
		t.Fatal(err)
	}
	if err := feeds.Index([]string{"Source"}); err != nil {
		t.Fatal(err)
	}
	for _, path := range feeds.AllIndexes() {
		joint := strings.Join(path, "")
		if joint != "authornamefirst_name" && joint != "Title" && joint != "Source" {
			t.Fatal(feeds.AllIndexes())
		}
	}
	if err := feeds.Unindex([]string{"author", "name", "first_name"}); err != nil {
		t.Fatal(err)
	}

	// ****************** Queries ******************
	// Prepare some documents for the query
	if _, err := feeds.Insert(map[string]interface{}{"Title": "New Go release", "Source": "golang.org", "Age": 3}); err != nil {
		t.Fatal("failure")
	}
	if _, err := feeds.Insert(map[string]interface{}{"Title": "Kitkat is here", "Source": "google.com", "Age": 2}); err != nil {
		t.Fatal("failure")
	}
	if _, err := feeds.Insert(map[string]interface{}{"Title": "Good Slackware", "Source": "slackware.com", "Age": 1}); err != nil {
		t.Fatal("failure")
	}
	var query interface{}
	if json.Unmarshal([]byte(`[{"eq": "New Go release", "in": ["Title"]}, {"eq": "slackware.com", "in": ["Source"]}]`), &query) != nil {
		t.Fatal("failure")
	}
	queryResult := make(map[int]struct{}) // query result (document IDs) goes into map keys
	if err := db.EvalQuery(query, feeds, &queryResult); err != nil {
		t.Fatal(err)
	}
	// Query result are document IDs
	for id := range queryResult {
		// To get query result document, simply read it
		readBack, err := feeds.Read(id)
		if err != nil {
			panic(err)
		}
		if !sameMap(readBack, map[string]interface{}{"Title": "New Go release", "Source": "golang.org", "Age": 3}) &&
			!sameMap(readBack, map[string]interface{}{"Title": "Good Slackware", "Source": "slackware.com", "Age": 1}) {
			t.Fatal(readBack)
		}
	}

	if err := myDB.Close(); err != nil {
		t.Fatal(err)
	}
}
开发者ID:Lanzafame,项目名称:tiedot,代码行数:101,代码来源:example_test.go


示例20: eval

func (q *Query) eval() (RawResultSet, error) {
	query := prepQuery(q.q)
	res := make(map[uint64]struct{})
	err := tiedot.EvalQuery(query, q.col, &res)
	return res, err
}
开发者ID:ryansb,项目名称:legowebservices,代码行数:6,代码来源:query.go



注:本文中的github.com/HouzuoGuo/tiedot/db.EvalQuery函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang db.OpenDB函数代码示例发布时间:2022-05-28
下一篇:
Golang relay.NewConnectionArguments函数代码示例发布时间:2022-05-28
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap