我是Golang的新手,我想阅读mongodb中的汽车记录,所以我有多达29条记录 我创建了一个cars.go充当控制器并用该代码填充
func (controller CarController) GetIndex(c *gin.Context) {
carList:=controller.carService.Find(&bson.M{})
c.JSON(http.StatusOK, &carList)
//fmt.Println(carList)
}
在我的carService.go中我编码
func (r CarService) Find(query *bson.M) (cars []models.Car) {
session, _ := mgo.Dial(r.uri)
defer session.Close()
session.SetSafe(&mgo.Safe{})
collection := session.DB(r.dbName).C(r.collectionName)
collection.Find(query).All(&cars)
fmt.Println(cars)
return cars
}
在我的main.go路由器中
router.GET("/car",carBaseController.GetIndex)
当我使用fmt.Println(carList)测试fir-fox控制台时,我看到了重复的记录
[
{
"Id":"56b636688a47a60aa8601f57",
"model":"ayman",
"brand":"islamic",
"CreatedAt":6248241353327640577
},
{
"Id":"56b63b658a47a605dc9e8e38",
"model":"ayman",
"brand":"islamic",
"CreatedAt":6248246838000877569
},
{
"Id":"56b642728a47a62364f3e0e0",
"model":"ayman 0",
"brand":"islamic 0",
"CreatedAt":6248254590416846849
},
{
"Id":"56b642728a47a62364f3e0e1",
"model":"ayman 1",
"brand":"islamic 1",
"CreatedAt":6248254590416846850
},
{
"Id":"56b642728a47a62364f3e0e2",
"model":"ayman 2",
"brand":"islamic 2",
"CreatedAt":6248254590416846851
},
{
"Id":"56b642728a47a62364f3e0e3",
"model":"ayman 3",
"brand":"islamic 3",
"CreatedAt":6248254590416846852
},
{
"Id":"56b642728a47a62364f3e0e4",
"model":"ayman 4",
"brand":"islamic 4",
"CreatedAt":6248254590416846853
},
{
"Id":"56b642728a47a62364f3e0e5",
"model":"ayman 5",
"brand":"islamic 5",
"CreatedAt":6248254590416846854
},
{
"Id":"56b642728a47a62364f3e0e6",
"model":"ayman 6",
"brand":"islamic 6",
"CreatedAt":6248254590416846855
},
{
"Id":"56b642728a47a62364f3e0e7",
"model":"ayman 7",
"brand":"islamic 7",
"CreatedAt":6248254590416846856
},
{
"Id":"56b642728a47a62364f3e0e8",
"model":"ayman 8",
"brand":"islamic 8",
"CreatedAt":6248254590416846857
},
{
"Id":"56b642728a47a62364f3e0e9",
"model":"ayman 9",
"brand":"islamic 9",
"CreatedAt":6248254590416846858
},
{
"Id":"56b642728a47a62364f3e0ea",
"model":"ayman 10",
"brand":"islamic 10",
"CreatedAt":6248254590416846859
},
{
"Id":"56b642728a47a62364f3e0eb",
"model":"ayman 11",
"brand":"islamic 11",
"CreatedAt":6248254590416846860
},
{
"Id":"56b642728a47a62364f3e0ec",
"model":"ayman 12",
"brand":"islamic 12",
"CreatedAt":6248254590416846861
},
{
"Id":"56b642728a47a62364f3e0ed",
"model":"ayman 13",
"brand":"islamic 13",
"CreatedAt":6248254590416846862
},
{
"Id":"56b642728a47a62364f3e0ee",
"model":"ayman 14",
"brand":"islamic 14",
"CreatedAt":6248254590416846863
},
{
"Id":"56b642728a47a62364f3e0ef",
"model":"ayman 15",
"brand":"islamic 15",
"CreatedAt":6248254590416846864
},
{
"Id":"56b642728a47a62364f3e0f0",
"model":"ayman 16",
"brand":"islamic 16",
"CreatedAt":6248254590416846865
},
{
"Id":"56b642728a47a62364f3e0f1",
"model":"ayman 17",
"brand":"islamic 17",
"CreatedAt":6248254590416846866
},
{
"Id":"56b642728a47a62364f3e0f2",
"model":"ayman 18",
"brand":"islamic 18",
"CreatedAt":6248254590416846867
},
{
"Id":"56b642728a47a62364f3e0f3",
"model":"ayman 19",
"brand":"islamic 19",
"CreatedAt":6248254590416846868
},
{
"Id":"56b642728a47a62364f3e0f4",
"model":"ayman 20",
"brand":"islamic 20",
"CreatedAt":6248254590416846869
},
{
"Id":"56b642728a47a62364f3e0f5",
"model":"ayman 21",
"brand":"islamic 21",
"CreatedAt":6248254590416846870
},
{
"Id":"56b642728a47a62364f3e0f6",
"model":"ayman 22",
"brand":"islamic 22",
"CreatedAt":6248254590416846871
},
{
"Id":"56b642728a47a62364f3e0f7",
"model":"ayman 23",
"brand":"islamic 23",
"CreatedAt":6248254590416846872
},
{
"Id":"56b642728a47a62364f3e0f8",
"model":"ayman 24",
"brand":"islamic 24",
"CreatedAt":6248254590416846873
},
{
"Id":"56b642728a47a62364f3e0f9",
"model":"ayman 25",
"brand":"islamic 25",
"CreatedAt":6248254590416846874
},
{
"Id":"56b642728a47a62364f3e0fa",
"model":"ayman 26",
"brand":"islamic 26",
"CreatedAt":6248254590416846875
},
{
"Id":"56b642728a47a62364f3e0fb",
"model":"ayman 27",
"brand":"islamic 27",
"CreatedAt":6248254590416846876
},
{
"Id":"56b642728a47a62364f3e0fc",
"model":"ayman 28",
"brand":"islamic 28",
"CreatedAt":6248254590416846877
},
{
"Id":"56b642728a47a62364f3e0fd",
"model":"ayman 29",
"brand":"islamic 29",
"CreatedAt":6248254590416846878
},
{
"Id":"56b6e2f98a47a60d50c13ef9",
"model":"ayman 0",
"brand":"islamic 0",
"CreatedAt":6248431092097875969
},
{
"Id":"56b6e2f98a47a60d50c13efa",
"model":"ayman 1",
"brand":"islamic 1",
"CreatedAt":6248431092097875970
},
{
"Id":"56b6e2f98a47a60d50c13efb",
"model":"ayman 2",
"brand":"islamic 2",
"CreatedAt":6248431092097875971
},
{
"Id":"56b6e2f98a47a60d50c13efc",
"model":"ayman 3",
"brand":"islamic 3",
"CreatedAt":6248431092097875972
},
{
"Id":"56b6e2f98a47a60d50c13efd",
"model":"ayman 4",
"brand":"islamic 4",
"CreatedAt":6248431092097875973
},
{
"Id":"56b6e2f98a47a60d50c13efe",
"model":"ayman 5",
"brand":"islamic 5",
"CreatedAt":6248431092097875974
},
{
"Id":"56b6e2f98a47a60d50c13eff",
"model":"ayman 6",
"brand":"islamic 6",
"CreatedAt":6248431092097875975
},
{
"Id":"56b6e2f98a47a60d50c13f00",
"model":"ayman 7",
"brand":"islamic 7",
"CreatedAt":6248431092097875976
},
{
"Id":"56b6e2f98a47a60d50c13f01",
"model":"ayman 8",
"brand":"islamic 8",
"CreatedAt":6248431092097875977
},
{
"Id":"56b6e2f98a47a60d50c13f02",
"model":"ayman 9",
"brand":"islamic 9",
"CreatedAt":6248431092097875978
},
{
"Id":"56b6e2f98a47a60d50c13f03",
"model":"ayman 10",
"brand":"islamic 10",
"CreatedAt":6248431092097875979
},
{
"Id":"56b6e2f98a47a60d50c13f04",
"model":"ayman 11",
"brand":"islamic 11",
"CreatedAt":6248431092097875980
},
{
"Id":"56b6e2f98a47a60d50c13f05",
"model":"ayman 12",
"brand":"islamic 12",
"CreatedAt":6248431092097875981
},
{
"Id":"56b6e2f98a47a60d50c13f06",
"model":"ayman 13",
"brand":"islamic 13",
"CreatedAt":6248431092097875982
},
{
"Id":"56b6e2f98a47a60d50c13f07",
"model":"ayman 14",
"brand":"islamic 14",
"CreatedAt":6248431092097875983
},
{
"Id":"56b6e2f98a47a60d50c13f08",
"model":"ayman 15",
"brand":"islamic 15",
"CreatedAt":6248431092097875984
},
{
"Id":"56b6e2f98a47a60d50c13f09",
"model":"ayman 16",
"brand":"islamic 16",
"CreatedAt":6248431092097875985
},
{
"Id":"56b6e2f98a47a60d50c13f0a",
"model":"ayman 17",
"brand":"islamic 17",
"CreatedAt":6248431092097875986
},
{
"Id":"56b6e2f98a47a60d50c13f0b",
"model":"ayman 18",
"brand":"islamic 18",
"CreatedAt":6248431092097875987
},
{
"Id":"56b6e2f98a47a60d50c13f0c",
"model":"ayman 19",
"brand":"islamic 19",
"CreatedAt":6248431092097875988
},
{
"Id":"56b6e2f98a47a60d50c13f0d",
"model":"ayman 20",
"brand":"islamic 20",
"CreatedAt":6248431092097875989
},
{
"Id":"56b6e2f98a47a60d50c13f0e",
"model":"ayman 21",
"brand":"islamic 21",
"CreatedAt":6248431092097875990
},
{
"Id":"56b6e2f98a47a60d50c13f0f",
"model":"ayman 22",
"brand":"islamic 22",
"CreatedAt":6248431092097875991
},
{
"Id":"56b6e2f98a47a60d50c13f10",
"model":"ayman 23",
"brand":"islamic 23",
"CreatedAt":6248431092097875992
},
{
"Id":"56b6e2f98a47a60d50c13f11",
"model":"ayman 24",
"brand":"islamic 24",
"CreatedAt":6248431092097875993
},
{
"Id":"56b6e2f98a47a60d50c13f12",
"model":"ayman 25",
"brand":"islamic 25",
"CreatedAt":6248431092097875994
},
{
"Id":"56b6e2f98a47a60d50c13f13",
"model":"ayman 26",
"brand":"islamic 26",
"CreatedAt":6248431092097875995
},
{
"Id":"56b6e2f98a47a60d50c13f14",
"model":"ayman 27",
"brand":"islamic 27",
"CreatedAt":6248431092097875996
},
{
"Id":"56b6e2f98a47a60d50c13f15",
"model":"ayman 28",
"brand":"islamic 28",
"CreatedAt":6248431092097875997
},
{
"Id":"56b6e2f98a47a60d50c13f16",
"model":"ayman 29",
"brand":"islamic 29",
"CreatedAt":6248431092097875998
}
]
我怎么能解决这个问题?
答案 0 :(得分:1)
不确定,所以我认为问题是多行具有相同的数据。
如果你查看记录的id
,它们都是不同的,这意味着它们实际上是不同的记录。我猜你在MongoDB中多次插入同一个对象而没有指定ObjectId
。结果,Mongo无法检测到重复项并将记录接受为新记录。
在MongoDB中,存储在集合中的文档需要一个唯一的_id字段作为主键。如果未指定_id字段,MongoDB使用ObjectIds作为_id字段的默认值;
清理你的数据库,在你的mongo集合中创建一个有意义的文档id(more info here),你应该没问题。