ArangoDB函数db.query(ctx,query,bindVars)不返回任何数据

nqwrtyyt  于 2022-12-09  发布在  Go
关注(0)|答案(1)|浏览(147)

注解“使用绑定变量查询文档”下面的代码未生成预期的记录计数1。

import (
  "fmt"
  driver "github.com/arangodb/go-driver"
  "github.com/arangodb/go-driver/http"
  "context"
)
type Book struct {
    Title   string `json:"title"`
    NoPages int    `json:"no_pages"`
}
func main() {
    conn, err := http.NewConnection(http.ConnectionConfig {
    Endpoints: []string{"http://root@localhost:8529"},
    })
    if err != nil { panic(err) }

    c, err := driver.NewClient(driver.ClientConfig{
       Connection: conn,
    })

    // Open "examples_books" database
    db, err := c.Database(nil, "examples_books")
    if err != nil { panic(err) }

    // Open "books" collection
    col, err := db.Collection(nil, "books")
    if err != nil { panic(err) }

    // Create document
    book := Book{
        Title:   "ArangoDB Cookbook",
        NoPages: 257,
    }
    meta, err := col.CreateDocument(nil, book)
    if err != nil { panic(err) }
    fmt.Printf("Created document in collection '%s' in database 
    '%s'\n", col.Name(), db.Name())

    // Read the document back
    var result Book
    if _, err := col.ReadDocument(nil, meta.Key, &result); err != nil 
     { panic(err)}
    fmt.Printf("Read book '%+v'\n", result)

    //Querying documents with bind variables
    ctx := context.Background()
    query := "FOR d IN books FILTER d.NoPages == @noPages RETURN d"
    bindVars := map[string]interface{}{
      "noPages": 257,
    }
    cursor, err := db.Query(ctx, query, bindVars)
    if err != nil {
       panic(err)
    }
    defer cursor.Close()
    resultCount := cursor.Count()
    fmt.Printf("Number of records = %+v\n", resultCount)
}

Go语言版本1.13.7; ArangoDB 3.6.1,MacOS Catalina 10.15.3

nuypyhwy

nuypyhwy1#

我可以看到你有Book结构的字段NoPages在json定义中公开为no_pages。你能尝试将查询改为:

query := "FOR d IN books FILTER d.no_pages == @noPages RETURN d"

相关问题