8

ユーザーが検索したものからクエリを作成しようとしています。mongoDB セレクターで送信したい文字列の配列があります。問題は /text/ 構文にあり、次のように mongoDB コンソールから完全に機能します。

Items.find({ $or: [{name: /doc/}, {tags: /doc/}, {name: /test/}, {tags: /test/}] });

しかし、私はjavascriptで同じ構文を書くことができず、いくつかのバージョンを試しました。

var mongoDbArr = [];
  searchArray.forEach(function(text) {
    mongoDbArr.push({name: /text/});
    mongoDbArr.push({tags: /text/});
  });
  return Items.find({ $or: mongoDbArr});

ただし、変数の内容ではなく、「テキスト」のみを検索します。そして、このように:

var mongoDbArr = [];
  searchArray.forEach(function(text) {
    mongoDbArr.push({name: "/" + text + "/"});
    mongoDbArr.push({tags: "/" + text + "/"});
  });
  return Items.find({ $or: mongoDbArr});

しかし、それは私に結果を返してくれません。私は何が欠けていますか?

4

2 に答える 2

5

サーバーの公開機能でこれを試してください:

return YourCollection.find({'$or' : [ 
  { 'field1':{'$regex':searchString} },
  { 'field2':{'$regex':searchString} },
  { 'field3':{'$regex':searchString} }, ]
});
于 2013-04-15T19:05:33.543 に答える