如何获取mongodb中具有对象ID的所有记录

In the mongodb there is a user data has been stored in collection challange the data seems like bellow:

{
"_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"
}

In the above data there are four records and two of them having id in the integer form and other will having id in object form. I just want to retrieve the all the records which are having the object id in the id field. can anyone tell what query should I write in the code that will only retrieve that records which are having the object id.

Updated:

code I'm using :

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) 

The error I'm facing by using this :-

controllers/UserController.go:18:23: invalid character literal (more than one character) controllers/UserController.go:18:28: cannot use '\u0000' (type rune) as type string in map key

dtu1747
dtu1747 这些答案是正确的,如果我们在mongodbshell中运行它,但我需要它作为golang中的查询
大约 2 年之前 回复
douhuang3740
douhuang3740 不,我从未使用过MongoDB。我不知道您为什么认为可以改善格式的人是您特定问题的主题专家。但是您已经有多个答案。
大约 2 年之前 回复

3个回答



'_ id'</ code>和'$ type'</ code>无效符文文字,您不能在一个符文文字(仅一个符文)中列出多个符文(字符)。 </ p>

bson.M </ code> 类型是键类型为 string </ code>的地图,因此您必须使用字符串文字(或表达式),例如:</ p>

  conditions:= bson.M {“ _ id”:bson.M {“ $ 类型“:” objectId“}} 
</ code> </ pre>

还要注意, bson </ code> 软件包包含常量用于不同的类型,因此使用t更安全 软管常数:</ p>

 条件:= bson.M {“ _ id”:bson.M {“ $ type”:bson.ElementObjectId}} 
</ code> </ pre>
</ div>

展开原文

原文

'_id' and '$type' are invalid rune literals, you can't list multiple runes (characters) in a rune literal (only a single rune).

The bson.M type is a map with string key type, so you have to use string literals (or expressions), like this:

conditions := bson.M{"_id": bson.M{"$type": "objectId"}}

Also note that the bson package holds constants for the different types, so it's safer to use those constants:

conditions := bson.M{"_id": bson.M{"$type": bson.ElementObjectId}}

douzhan8303
douzhan8303 谢谢你的回答
大约 2 年之前 回复



您可以使用 $ type 运算符:</ p>

  db.challenge.find({_id:{$ type:” objectId“}}})\  n </ code> </ pre> 
</ div>

展开原文

原文

You can use $type operator:

db.challenge.find({ _id: { $type: "objectId" } })

doupishan3309
doupishan3309 看到我正在使用像条件这样的查询条件== bson.M {'_ id':bson.M {'$ type':“ objectId”}}数据,错误:= models.GetAllUsers(conditions)`
大约 2 年之前 回复
doubu5035
doubu5035 您的问题没有任何意义:)您需要阅读文档,也许在这里:godoc.org/labix.org/v2/mgo#Collection.Find
大约 2 年之前 回复
dongquexi1990
dongquexi1990 那它怎么写的可以告诉我先生@mickl
大约 2 年之前 回复



您可以尝试以下方式</ p>

  //用于检索ObjectID 
db。 challange.find(
{
“ _id”:{
$ type:7 // ObjectID
}
}

//用于检索数字
db.challange.find(\ n {
$ or:[
{
“ _id”:{
$ type:1 // double
}
},
{
“ _id”:{
$ type:16 // 32位整数
}
},
{
“ _id”:{
$ type:18 // 64位整数
}
},
{
“ _id”:{

$ type:19 //小数
}
}
]
}

</ code> </ pre>

引用 $ type $ or </ p>
</ div>

展开原文

原文

You can try like below

//For Retrieving for ObjectID
db.challange.find(
    {
        "_id": {
            $type: 7  //ObjectID
        }
    }
)

//For Retrieving for Number
db.challange.find(
    {
        $or: [
            {
                "_id": {
                    $type: 1  //double
                }
            },
            {
                "_id": {
                    $type: 16  //32 bit integer
                }
            },
            {
                "_id": {
                    $type: 18  //64 bit integer
                }
            },
            {
                "_id": {
                    $type: 19  //decimal
                }
            }
        ]
    }
)

Refer $type , $or

duandi8838
duandi8838 现在看到我更新我的代码
大约 2 年之前 回复
duangao8359
duangao8359 更新有问题的代码
大约 2 年之前 回复
dplht39359
dplht39359 看到@ratanUdayKumar我也这样写,但是它给了我错误条件:= bson.M {'_ id':bson.M {'$ type':“ objectId”}}数据,err:= models.GetAllUsers(conditions )
大约 2 年之前 回复
douhensheng1131
douhensheng1131 请参阅此文档goinbigdata.com/…
大约 2 年之前 回复
dpvmjk0479
dpvmjk0479 你能告诉我如何在go lang中写查询吗
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐