【问题标题】:Mgo (mongo for go) support for materialized paths?Mgo (mongo for go) 是否支持物化路径?
【发布时间】:2015-12-18 17:58:45
【问题描述】:

使用 BSON 和 Mgo(用于 go 的丰富 mongodb 驱动程序),一种方法将如何实现物化路径?

在 mongo 文档中记录了物化路径 here。物化路径旨在为多层嵌套数据提供树状结构。

使用纯javascript,命令如下(来自documentation):

db.categories.insert( { _id: "Books", path: null } )
db.categories.insert( { _id: "Programming", path: ",Books," } )
db.categories.insert( { _id: "Databases", path: ",Books,Programming," } )
db.categories.insert( { _id: "Languages", path: ",Books,Programming," } )

使用以下条目创建集合“类别”

Books > Programming > Databases
Books > Programming > Languages

并且可以使用以下方式查询:

db.categories.find( { path: /,Programming,/ } )

将找到两个都是编程后裔的条目。

如何使用 MgoBSON 来实现这一点?

Mgo 文档中没有此类文档。我尝试过诸如

之类的尝试
result := []bson.M{}
database.C("categories").Find(bson.M{"path": "/,Programming,/"}).All(&result)
fmt.Println(result)

只返回一个空数组[]

有没有 gophers 和 mongo 爱好者可以在这里启发我?

谢谢!

【问题讨论】:

  • 您需要研究如何将正则表达式传递到您的查询中。路径存储为字符串,/,Programming,/ 是正则表达式。
  • @Martin 嗯.. 好的!我现在正在调查。

标签: mongodb go bson mgo database


【解决方案1】:

mgo/bson 文档中查看此部分:http://godoc.org/labix.org/v2/mgo/bson#RegEx

应该是这个样子

database.C("categories").Find(bson.M{"path": &bson.RegEx{Pattern: ",Programming,", Options: "i"}}).All(&result)

【讨论】:

    猜你喜欢
    • 2017-02-07
    • 1970-01-01
    • 2022-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多