В mongodb есть пользовательские данные, которые были сохранены в коллекции challange
данные выглядят так:
{
"_id" : 1,
"name" : "puneet",
"last" : "jindal",
"email" : "puneet@g.com"
}
{
"_id" : ObjectId("5b3af82cdb3aaa47792b5fd3"),
"name" : "hardeep",
"last" : "singh",
"email" : "hardeep@g.com"
}
{
"_id" : 3,
"name" : "gaurav",
"last" : "bansal",
"email" : "gaurav@g.com"
}
{
"_id" : ObjectId("5b3af87ddb3aaa47792b5fd4"),
"name" : "manish",
"last" : "jindal",
"email" : "manish@g.com"
}
В приведенных выше данных есть четыре записи, две из которых имеют идентификатор в целочисленной форме, а другие будут иметь идентификатор в виде объекта. Я просто хочу получить все записи, которые имеют object id
в поле id. Кто-нибудь может сказать, какой запрос я должен написать в коде, который будет извлекать только те записи, которые имеют идентификатор объекта.
Обновлен:
код, который я использую:
type User struct {
Id bson.ObjectId `json:"_id" bson:"_id,omitempty"`
Name string `json:"name,omitempty" bson:"name,omitempty"`
Last string `json:"last,omitempty" bson:"last,omitempty"`
Email string `json:"email,omitempty" bson:"email,omitempty"`
}
type Users []User
func GetAllUsers(listQuery interface{}) (result Users, err error) {
mongoSession := config.ConnectDb()
sessionCopy := mongoSession.Copy()
defer sessionCopy.Close()
getCollection := mongoSession.DB(config.Database).C(config.UsersCollection)
err = getCollection.Find(listQuery).Select(bson.M{"password": 0}).All(&result)
if err != nil {
return result, err
}
return result, nil
}
conditions := bson.M{'_id': bson.M{'$type': "objectId" } }
data, err := models.GetAllUsers(conditions)
Ошибка, с которой я сталкиваюсь при использовании этого: -
controllers / UserController.go: 18: 23: недопустимый символьный литерал (более одного символа)
controllers / UserController.go: 18: 28: нельзя использовать «\ u0000» (тип руны) в качестве строки типа в ключе карты