我有一个MongoDB集合collection := db.Collection("JobBacklog")
,我正尝试将其打印到控制台中。该数据库位于Docker容器中,并使用Go编写的脚本对其进行控制。
根据我从mongo-go-driver https://godoc.org/github.com/mongodb/mongo-go-driver/mongo中找到的信息
有一种方法可以执行此操作,但是当我知道不是这样时,我的代码会不断返回document is nil
。
这是我用来尝试遍历名为JobBacklog
的集合的代码。
cur, err := collection.Find(context.Background(), nil)
if err != nil {
log.Fatal(err)
}
defer cur.Close(context.Background())
for cur.Next(context.Background()) {
raw, err := cur.DecodeBytes()
if err != nil {
log.Fatal(err)
}
//print element data from collection
fmt.Println("Element", raw, x)
}
if err := cur.Err(); err != nil {
log.Fatal(err)
}
我希望它可以打印出以下内容:
_id:5c2d34e36657ba3238374f9a
UID:"ALDK"
PROFILE:"B"
STATUS:"PENDING"
DEVICE:"2.2.2.2"
这是JobBacklog数据库的示例条目。
完全公开,此操作的最终目标是找到添加到集合中的最后一个条目,但是我需要能够先通读该集合。
我知道我已经连接到数据库,我可以添加/查找/删除条目,但是从收藏集中打印出来的一切使我望而却步。 任何帮助表示赞赏。 谢谢!
答案 0 :(得分:1)
错误消息“文档为零”与Find()中的过滤器有关。更改行
cur, err := collection.Find(context.Background(), nil)
到
cur, err := collection.Find(context.Background(), bson.D{{}})
应该工作。
答案 1 :(得分:0)
db.Collection("JobBacklog").find({},function(err,result){
console.log(result);
})