golang中如何使用coach db查询限制
我正在golang处理couchdb,我需要选择限制为1的记录,我正在尝试下面的mango查询golang中如何使用coach db查询限制,go,couchdb,Go,Couchdb,我正在golang处理couchdb,我需要选择限制为1的记录,我正在尝试下面的mango查询 {"selector": {"$and": [{"memid": {"$gt": "null"}}, {"custid": {"$gt": "null"}}]},"limit" : 1} 上述查询在fauxton on browser中运行良好,但在golang中不起作用,所有结果都不受应用限制 golang查询: queryString := fmt.Sprintf("{\"selector\":
{"selector": {"$and": [{"memid": {"$gt": "null"}}, {"custid": {"$gt": "null"}}]},"limit" : 1}
上述查询在fauxton on browser中运行良好,但在golang中不起作用,所有结果都不受应用限制
golang查询:
queryString := fmt.Sprintf("{\"selector\": {\"$and\": [{\"memid\": {\"$gt\": \"%s\"}}, {\"custid\": {\"$gt\": \"%s\"}}]},\"limit\" : \"%d\"}", "null", "null",1)
queryResults, err := getQueryResultForQueryString(stub, queryString)
getQueryResultForQueryString的函数定义:
func getQueryResultForQueryString(stub shim.ChaincodeStubInterface, queryString string) ([]byte, error) {
fmt.Printf("- getQueryResultForQueryString queryString:\n%s\n", queryString)
resultsIterator, err := stub.GetQueryResult(queryString)
if err != nil {
return nil, err
}
defer resultsIterator.Close()
// buffer is a JSON array containing QueryRecords
var buffer bytes.Buffer
buffer.WriteString("[")
bArrayMemberAlreadyWritten := false
for resultsIterator.HasNext() {
queryResponse, err := resultsIterator.Next()
if err != nil {
return nil, err
}
// Add a comma before array members, suppress it for the first array member
if bArrayMemberAlreadyWritten == true {
buffer.WriteString(",")
}
buffer.WriteString("{\"Key\":")
buffer.WriteString("\"")
buffer.WriteString(queryResponse.Key)
buffer.WriteString("\"")
buffer.WriteString(", \"Record\":")
// Record is a JSON object, so we write as-is
buffer.WriteString(string(queryResponse.Value))
buffer.WriteString("}")
bArrayMemberAlreadyWritten = true
}
buffer.WriteString("]")
fmt.Printf("- getQueryResultForQueryString queryResult:\n%s\n", buffer.String())
return buffer.Bytes(), nil
}
请访问github.com/leesper/couchdb-golang
func (d *Database) Query(fields []string, selector string, sorts []string, limit, skip, index interface{}) ([]map[string]interface{}, error)
请访问github.com/leesper/couchdb-golang
func (d *Database) Query(fields []string, selector string, sorts []string, limit, skip, index interface{}) ([]map[string]interface{}, error)
我建议使用合适的CouchDB库进行Go。我的偏好是for,但我写了它,所以我有偏见。但即使你不想使用适当的CouchDB库,至少也要使用适当的JSON封送,而不是从头开始构建JSON字符串。我建议使用适当的CouchDB库进行Go。我的偏好是for,但我写了它,所以我有偏见。但即使您不想使用适当的CouchDB库,至少也要使用适当的JSON封送,而不是从头构建JSON字符串。