gpt4 book ai didi

mongodb - 使用 mgo 按 id 查找

转载 作者:IT老高 更新时间:2023-10-28 13:08:14 26 4
gpt4 key购买 nike

我想通过 _id 查找数据。我知道这个数据存在并且这个 _id 存在(我已经用 pymongo 测试过)。

但是下面的代码没有找到:

type id_cookie struct {
IdCookie int
}

func get_id_mongo() int {
session, err := mgo.Dial("127.0.0.1")
if err != nil {
panic(err)
}
defer session.Close()

// Optional. Switch the session to a monotonic behavior.
session.SetMode(mgo.Monotonic, true)

c := session.DB("id_bag").C("id_cookie")
data := id_cookie{}
err2 := c.FindId(bson.M{"_id": bson.ObjectIdHex("58593d1d6aace357b32bb3a1")}).One(&data)
if (err2 != nil){
Info.Println("error")
Info.Println(err2)
}
Info.Println(data)
return data.IdCookie
}

它只是返回一个0

但我可以使用 pytmongo 和 python 找到它。

import requests
import pymongo
from pymongo import MongoClient
from bson.objectid import ObjectId
from pprint import pprint
client = MongoClient('127.0.0.1', 27017)

import base64



db = client.id_bag
pprint(db.collection_names())
result = db.id_cookie.insert_one(
{ 'IdCookie': 1
})
print(result.inserted_id)

data = db.id_cookie.find_one({"_id": ObjectId("58593d1d6aace357b32bb3a1")})
print(data)

结果如下:

['id_cookie', 'system.indexes']
58593d2d6aace357b32bb3a3
{'IdCookie': 1, '_id': ObjectId('58593d1d6aace357b32bb3a1')}

有人知道吗?

编辑:我试过了:

err2 := c.FindId(bson.ObjectIdHex("58593d1d6aace357b32bb3a1")).One(&data)

但我还有 0 :

INFO: 2016/12/20 15:42:08 Cookie_Id.go:147: 1
INFO: 2016/12/20 15:42:08 Cookie_Id.go:149: 2
INFO: 2016/12/20 15:42:18 Cookie_Id.go:87: data
INFO: 2016/12/20 15:42:18 Cookie_Id.go:88: {0}
INFO: 2016/12/20 15:42:18 Cookie_Id.go:89: 0
INFO: 2016/12/20 15:42:18 Cookie_Id.go:118: 0
INFO: 2016/12/20 15:42:18 Cookie_Id.go:128: OK

最佳答案

您可以使用 Collection.FindId()然后你只传递 id 值,或者你使用 Collection.Find()然后你也必须用字段名指定一个值:

err2 := c.FindId(bson.ObjectIdHex("58593d1d6aace357b32bb3a1")).One(&data)

// OR
err2 := c.Find(bson.M{"_id": bson.ObjectIdHex("58593d1d6aace357b32bb3a1")}).
One(&data)

如果没有出现错误,则说明文档已找到。

如果您总是看到 0 打印(作为 id_cookie.IdCookie 字段的值),这意味着文档中包含此 id 的字段具有不同的名称。

使用 struct tags告诉它如何存储在您的 MongoDB 中。例如。如果在你的 MongoDB 中它被称为 "myid",你可以像这样映射它:

type id_cookie struct {
IdCookie int `bson:"myid"`
}

另外请注意,您不应该每次要查询某些数据时都连接到 MongoDB 服务器,而是连接一次,然后重用 session 。详情见:mgo - query performance seems consistently slow (500-650ms)

关于mongodb - 使用 mgo 按 id 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41244024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com