Reputation: 53
I want to execute following query in MongoDB in Golang
check_select = bson.M{
"$and": []interface{}{
"shr_key": user_shr_key,
"id": uid,
"user_history": bson.M{"$elemMatch": bson.M{"action": "STOP", "message_id": mid}},
},
}
Please help... I am getting following error "index must be non-negative integer constant"
.
Upvotes: 4
Views: 9808
Reputation: 183
Here You Can See , Get Values by $Match , $and Using Golang MongoDB
pipeline := []bson.M{
bson.M{"$match": bson.M{"$and": []bson.M{bson.M{"storyID": storyID},
bson.M{"parentID": parentID}}}}
}
Upvotes: 1
Reputation: 2951
The error is from the way you initialize an array
in go
:
....
"$and": []interface{}{
"shr_key": user_shr_key,
....
go
array doesn't accept string
as an index.
Anyway, in order to solve your problem, remove index from array initialization and wrap the key-value pair in bson.M
will do, eg:
bson.M{
"$and": []bson.M{ // you can try this in []interface
bson.M{"shr_key": user_shr_key},
bson.M{"id": uid},
bson.M{"user_history": bson.M{"$elemMatch": bson.M{"action": "STOP", "message_id": mid}}},
},
}
Upvotes: 11