当前位置: 首页 > 面试题库 >

如何在Golang和MongoDB中按ID查找

丰飞龙
2023-03-14
问题内容

我需要使用ObjectIdHex获取值,并进行更新并查看结果。我正在使用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")})


 类似资料:
  • 我有一个带有EditText的对话框,在那里,它要求一个钱包,用户写它。 之后,这个钱包应该存储在一个字符串中,但它说它是空的。 尝试在空对象引用上调用虚拟方法android.text.可编辑android.widget.EditText.getText() 如果我使用活动中的编辑文本,效果很好。但当我在EditText(eTW)对话框中执行时,它失败了。 这是我的密码。

  • 问题内容: 我有下面的结构。我使用 Golang 1.9.2 。 一个 活动 (了解营销活动)是由 事件 或 地点 可以与(基本或溢价)的水平而提高。广告活动有开始日期和结束日期,推广活动也是如此。 函数必须返回给定事件的级别。 如果事件在 有效的广告系列中 被增强(is ),并且 增强被激活 (is )并且 现在日期在boost的开始日期和结束日期之间 ,则我的Event被 增强 ,因此该函数返

  • 我想通过我提供的id从托管bean中找到一些。

  • 我试图创建一个HTML编辑器(学习目的),我试图使程序尽可能动态。我希望通过它的id查找FXML变量,如TextField,并在按下按钮时检索TextField中的文本。 我设置了2个映射变量 我希望类似于通过ActionEvent获取按钮ID/值的方式。 编辑:以下是完整的FXML btw

  • 我在MongoDB集合中有一个Json文档,我希望根据_id查询它。

  • 问题内容: 我在mgo主页上浏览了该示例,但是我一直在努力寻找一种查询一系列值的方法。该行: 失败,带有: 我省去了不必要的代码… 问题答案: 该行: 需要更改为: