当前位置: 首页>>代码示例>>Golang>>正文


Golang Query.Limit方法代码示例

本文整理汇总了Golang中labix/org/v2/mgo.Query.Limit方法的典型用法代码示例。如果您正苦于以下问题:Golang Query.Limit方法的具体用法?Golang Query.Limit怎么用?Golang Query.Limit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在labix/org/v2/mgo.Query的用法示例。


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

示例1: Do

func (qw *QueryWork) Do(c chan<- interface{}) {
	customerID := qw.randSource.Int31n(MaxNumCustomers)
	cashRegisterID := qw.randSource.Int31n(MaxNumCashRegisters)
	price := qw.randSource.Float64()*MaxPrice + float64(customerID)/100.0
	// generate a random time since qw.StartTime
	// there is likely a better way to do this
	since := time.Since(qw.startTime)
	sinceInNano := since.Nanoseconds()
	var randomTime int64
	if sinceInNano > 0 {
		randomTime = qw.randSource.Int63n(sinceInNano)
	}
	timeToQuery := qw.startTime.Add(time.Duration(randomTime))

	var query *mgo.Query
	if qw.numQueriesSoFar%3 == 0 {
		filter := bson.M{"$or": []bson.M{
			bson.M{"pr": price, "ts": timeToQuery, "cid": bson.M{"$gte": customerID}},
			bson.M{"pr": price, "ts": bson.M{"$gt": timeToQuery}},
			bson.M{"pr": bson.M{"$gt": price}}}}
		projection := bson.M{"pr": 1, "ts": 1, "cid": 1}
		query = qw.coll.Find(filter).Select(projection).Hint("pr", "ts", "cid")
	} else if qw.numQueriesSoFar%3 == 1 {
		filter := bson.M{"$or": []bson.M{
			bson.M{"crid": cashRegisterID, "pr": price, "cid": bson.M{"$gte": customerID}},
			bson.M{"crid": cashRegisterID, "pr": bson.M{"$gt": price}},
			bson.M{"crid": bson.M{"$gt": cashRegisterID}}}}
		projection := bson.M{"crid": 1, "pr": 1, "cid": 1}
		query = qw.coll.Find(filter).Select(projection).Hint("crid", "pr", "cid")
	} else {
		filter := bson.M{"$or": []bson.M{
			bson.M{"pr": price, "cid": bson.M{"$gte": customerID}},
			bson.M{"pr": bson.M{"$gt": price}}}}
		projection := bson.M{"pr": 1, "cid": 1}
		query = qw.coll.Find(filter).Select(projection).Hint("pr", "cid")
	}

	var result bson.M
	iter := query.Limit(*queryResultLimit).Iter()
	for iter.Next(&result) {
	}
	qw.numQueriesSoFar++
	c <- Result{NumQueries: 1}
}
开发者ID:Tokutek,项目名称:go-benchmark,代码行数:44,代码来源:iibench.go


注:本文中的labix/org/v2/mgo.Query.Limit方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。