【问题标题】:How to retrive integer ObjectID in mongodb如何在 mongodb 中检索整数 ObjectID
【发布时间】:2020-06-12 05:25:33
【问题描述】:

如何获取整数 id,因为我将 id 存储为 1,2,3,4,..

有任何方法可以通过使用 id 作为 int 而不是 hex

来获取记录
// Grab id
id := c.Params.ByName("id")

//Verify id is ObjectId, otherwise fail
if !bson.IsObjectIdHex(id) {
    checkErrTypeTwo("ID is not a bson.ObjectId", "404", c)
    return
}
// Grab id
oid := bson.ObjectIdHex(id)

// Stub user
u := models.User{}
err := uc.session.DB(DB_NAME).C(DB_COLLECTION).FindId(oid).One(&u)

【问题讨论】:

  • 您是否将其存储为 id_id
  • 您能从您的代码中提取minimal reproducible example 并提供吗?我们不知道您的数据库中存储了什么,也不知道如何检索它。

标签: mongodb go


【解决方案1】:

如果我理解正确,您希望通过您存储的整数 id 进行查询,而不是自动生成的 ObjectID(_id)

// Assumed imports
import (
  "log"
  "go.mongodb.org/mongo-driver/mongo"
  "go.mongodb.org/mongo-driver/bson"
)

// some func scope

var id int64
// init for id
u := models.User{}
var db *mongo.Database = uc.session.Db(DB_NAME)
if err := db.Collection(DB_COLLECTION).FindOne(context.TODO(), bson.M{
  "id": id,
}).Decode(&u); err != nil {
  log.Fatal(err.Error())
}

【讨论】:

  • 是的,但是你已经导入了 mongo-driver,但我导入了 mgo.v2,并且我已经使用 gin 框架完成了......
  • 我真的建议不要使用无人维护的软件。特别是当它驱动一项自 2016 年以来发生了很大变化的技术(mgo 的最新版本)时。
猜你喜欢
  • 2014-04-22
  • 2021-08-19
  • 1970-01-01
  • 2021-09-15
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
相关资源
最近更新 更多