2017-02-14 8 views
1

「tribe_type」が「initial-public」に等しくないBCONクエリに要件を追加しようとしています。

私の元のコードがあってそれが働いた:

query = BCON_NEW ("_id", BCON_OID(&oid)); 

私は2番目の部分を追加すると、それはしかし、モンゴのマッチが失敗し、コンパイルします。

 query = BCON_NEW ("_id", BCON_OID(&oid), 
      "{", 
       "tribe_type", 
       "$ne", 
       "initial-public", 
      "}" 
     ); 

答えて

1

あなたはUTF-8文字列のBCONタイプを指定する必要があります。
implict $、および に注意してください。ネストされたドキュメントとBCONには注意してください。

query = BCON_NEW ("_id", BCON_OID(&oid), 
     "{", 
      "tribe_type", 
      "$ne", 
      "initial-public", 
     "}" 
    ); 

はあなたが望むものは明らかではありません、このコマンド

{ "_id" : <an oid> }, { "tribe_type" : "$ne" } 

にコンパイル。

は、$および動作と明示的に正しくUTF8フィールドとして文字列を入力して、あなたがこのようなネストされた文書を取り込むことを確認してください。

query = BCON_NEW (
       "$and", "[", "{", "_id", BCON_OID(&oid), "}", 
          "{", "tribe_type", "{", "$ne", BCON_UTF8 ("initial-public"), "}", "}","]" 
       ); 

この

{ "$and" : [ { "_id" : <an oid> }, { "tribe_type" : { "$ne" : "initial-public" } } ] } 
のように見えるのクエリを生成します

これはおそらくあなたが望むものです。

+0

ありがとうございます。私が解決策を見つけ出している間、あなたの方がより良く、より多くの情報を得ることができます。ありがとう:) –

0
 query = BCON_NEW ("_id", BCON_OID(&oid), 
      "tribe_type", 
       "{", 
        "$ne", BCON_UTF8 ("initial-public"), 
        "}"); 
+0

私はそれを理解した後、完全に動作するコードを投稿しました。 –

関連する問題