3

コーヒーに関する情報を保存するためにMongoDBを使用していますが、クエリで問題が発生しています。

私のドキュメント構造は次のとおりです。

{ _id: "Thailand Bok", tags: ["Strong", "Smooth", "Dark"] }

名前またはタグのいずれかで検索できるクエリを作成しようとしています。

クエリ文字列が"ThailandBok"または["Strong"、 "Smooth"]である可能性があるため、_idまたは各タグを含むリクエストを検索します。

SQL用語で考えていた場合、次のようになります。

"WHERE `_id` like 'Not present%' OR ("Strong" IN `tags` AND "Smooth" IN `tags`)"

私がこれまでに持っているクエリは次のとおりです。

{ 
    $or: [
      { _id: { $regex: '^Not present', '$options': 'i' } },
      { 
          $and: [ 
              { tags: 'Strong' }, 
              { tags: 'Smooth' } 
          ]
      }
    ]
}

編集:クエリの間違いを修正し、_idが一致するかタグが一致する場合に機能することを明確にしました

4

2 に答える 2

7

$andはバージョンMongoDB2.0+でのみサポートされています私は1.8.2を使用していました

于 2012-04-29T13:46:43.077 に答える
5

$ orに中括弧の代わりに中括弧を使用することを除いて、クエリは問題ないようです。

{$or: [
  {_id: {$regex: '^hailand', $options: 'i'} }, 
  {'$and': [
       {tags: 'Strong'}, 
       {tags: 'Smooth'}
   ]}
]}

正常に動作します。

于 2012-04-29T13:21:18.303 に答える