2017-08-26 7 views
0

私の文書には、 'tags'というフィールドがあります。これは文字列の配列です。 「タグ」に「キーワード」が含まれているドキュメントを検索しようとしています。 しかし、Azure Cosmos DBではこれが機能していないようです。 何か助けていただければ幸いです。

編集:コメント担当者の一人として、以前の投稿をより完全なコードサンプルに置き換えました。

const MongoClient = require('mongodb').MongoClient; 
const mongoConnectionString = process.env.MONGODB_CONNECTION_STRING; 
const mongoOptions = 
{ 
    connectTimeoutMS: 0 
} 

var mongoDB; 

MongoClient.connect(mongoConnectionString, (err, db) => { 

    if (err) throw err; 

    mongoDB = db.db('mydb'); 

    mongoDB.collection('mycol', (err, collection) => {    
     if (err) throw err;    
     collection.find(
      {tags: {$in:['keyword']}}, 
      (err, cursor) => { 
       if (err) throw(err); 
       cursor.toArray((err, docs) => { 
        for (i = 0; i < docs.length; i++) { 
         console.log(JSON.stringify(docs)); 
         db.close(); 
        } 
       }); 
      } 
     ); 
    }); 
}); 
+0

'$ in'への引数は配列であることを意図しています。文字列を送るだけです。とにかく '{tags: 'keyword'}'がほしいと思うかもしれません。配列に格納されたアイテムに一致させるために特別な演算子は必要ありません。これは、もう一つの方法です。一致する「可能な値のリスト」です。 –

+0

{tags: 'keyword'}を試しました。それはまた動作しません。 – 3irhui34t34

+0

また、['.find()'](http://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#find)の実際のAPI仕様を見てください。有効な引数を指定します。 '.sort()'と '.limit()'は別のカーソル修飾子として使うべきです。反動的な編集もやめてください。質問をするときは、実際のコードをコピーして貼り付けます。どのくらい難しいですか?あなたが物事を変え続けて、あなたにまだ問題があると主張するならば、私たちはあなたが最初にそのように実際にそれを実行したと信じるのは難しいと感じます。 –

答えて

0

cosmos DBのマジックトリックは$ elemMatchを使用しています。ケースが閉まった。

mongoDB.collection('mycol', (err, collection) => {    
    if (err) throw err;    
    collection.find({tags: {$elemMatch:{$in : ['keyword']}}}).toArray((err, docs) => { 
     console.log(docs); 
    }); 
}); 
関連する問題