我需要使用ObjectDhex获取值,进行更新,并查看结果.我用的是mongodb和golang.但下面的代码并不像预期的那样工作

package main

import (
    "fmt"
    "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
)

type Person struct {
    Id      bson.ObjectId `json:"id" bson:"_id,omitempty"`
    Name  string
    Phone string
}

func checkError(err error) {
    if err != nil {
        panic(err)
    }
}

const (
    DB_NAME       = "gotest"
    DB_COLLECTION = "pepole_new1"
)

func main() {
    session, err := mgo.Dial("localhost")
    checkError(err)
    defer session.Close()

    session.SetMode(mgo.Monotonic, true)

    c := session.DB(DB_NAME).C(DB_COLLECTION)
    err = c.DropCollection()
    checkError(err)

    ale := Person{Name:"Ale", Phone:"555-5555"}
    cla := Person{Name:"Cla", Phone:"555-1234-2222"}
    kasaun := Person{Name:"kasaun", Phone:"533-12554-2222"}
    chamila := Person{Name:"chamila", Phone:"533-545-6784"}

    fmt.Println("Inserting")
    err = c.Insert(&ale, &cla, &kasaun, &chamila)
    checkError(err)

    fmt.Println("findbyID")
    var resultsID []Person
    //err = c.FindId(bson.ObjectIdHex("56bdd27ecfa93bfe3d35047d")).One(&resultsID)
    err = c.FindId(bson.M{"Id": bson.ObjectIdHex("56bdd27ecfa93bfe3d35047d")}).One(&resultsID)
    checkError(err)
    if err != nil {
        panic(err)
    }
    fmt.Println("Phone:", resultsID)



    fmt.Println("Queryingall")
    var results []Person
    err = c.Find(nil).All(&results)

    if err != nil {
        panic(err)
    }
    fmt.Println("Results All: ", results)


}

FindId(bson.M{"Id": bson.ObjectIdHex("56bdd27ecfa93bfe3d35047d")}).One(&resultsID)对我不起作用,并给我以下输出

Inserting
Queryingall
Results All:  [{ObjectIdHex("56bddee2cfa93bfe3d3504a1") Ale 555-5555} {ObjectIdHex("56bddee2cfa93bfe3d3504a2") Cla 555-1234-2222} {ObjectIdHex("56bddee2cfa93bfe3d3504a3") kasaun 533-12554-2222} {ObjectIdHex("56bddee2cfa93bfe3d3504a4") chamila 533-545-6784}]
findbyID
panic: not found

goroutine 1 [running]:
main.checkError(0x7f33d524b000, 0xc8200689b0)

我如何解决这个问题?我需要使用oid获取价值,并进行更新.我如何才能做到这一点

推荐答案

应该是_id而不是Id:

c.FindId(bson.M{"_id": bson.ObjectIdHex("56bdd27ecfa93bfe3d35047d")})

Mongodb相关问答推荐

MongoDB更新对象数组

如何在Mongo中制作全覆盖索引

MongoDB:检测所有重叠事件(开始/结束日期)?

Mongoose 查询以获取内部数组和该内部数组中的特定元素

发布到 MongoDB 时生成的附加id字段

如何更新mongo中列表最后一个对象的属性

DB 中的引用对象在 GraphQL 查询中返回 null

MongoDB中的readPreference和readConcern有什么区别?

根据 Month 删除 mongodb 中的旧记录

SELECT 字段 AS `anothername` 的 mongodb 等效项

Node.js 数据库的抽象层

如何在 Ruby on Rails 环境中使用 Mongoid 进行通配符搜索?

为 php 5.6 (XAMPP) 添加 mongodb 扩展

Mongoose 中不同集合的相同模式

MongoDB:自动生成的 ID 为零

Spring Data MongoDB 中的独特之处

Mongodb:为什么 show dbs 不显示我的数据库?

插入违反唯一索引的 MongoDB 文档时如何捕获错误?

MongoDB:如何在 100 个集合中找到 10 个随机文档?

MongoDB:聚合框架: $match between fields