2016-05-09 8 views
2

中のMgOクエリで$演算子を実行するためにはどのように助けてください...私は取得していますエラー"index must be non-negative integer constant"は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}}, 
      }, 
     } 

Golang

にMongoDBの中で次のクエリを実行します。

.... 
"$and": []interface{}{ 
    "shr_key": user_shr_key, 
.... 

go配列を指標とstringを受け入れていない:

答えて

4

エラーは、arraygoに初期化する方法からです。 、あなたの問題を解決するため、配列の初期化からインデックスを削除し、bson.Mにキーと値のペアをラップするために行います。とにかく

、例えば:

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}}}, 
      }, 
     } 
+0

どうもありがとうございました。しかし、私は次のエラーが表示されます。 "クエリを正規化できません:BadValueと配列が必要です" –

+0

残念です、@SyedQasimRizvi私は自分の答えを更新しました、 '$と'あなたが正しい配列を受け入れる必要があります。そのトリックは、初期化中にインデックスを削除できるということです。 – ch33hau

+0

ありがとう@ch33hau。それでも私は "見つかりません"というエラーが発生しています。しかし、この条件を満たすmongodbの記録があります。 –