LoginSignup
16
16

More than 5 years have passed since last update.

MongoDBのfindの特殊な検索条件

Posted at

ちょっとつまずいたのでメモ。
findで子要素を検索する場合は、キー名をクォーテーションで囲って文字列にして指定します。

子要素を検索条件にする

例えば、taskコレクションが以下のようなドキュメント構造だった場合に、日曜日が有効(1)になっているタスクを検索したい場合。

{
  "schedule_time": "07:30",
  "schedule_week": {
    "sun": 1,
    "mon": 1,
    "tue": 1,
    "wed": 1,
    "thu": 1,
    "fri": 1,
    "sat": 1
  },
  "title": "すごいがんばるタスク"
}
db.tasks.find({"schedule_week.sun": 1})     // OK
db.tasks.find({schedule_week.sun: 1})       // NG

子要素の配列の特定の位置を検索条件にする

例えば、taskコレクションが以下のようなドキュメント構造だった場合に、日曜日(配列は日から順)が有効(1)になっているタスクを検索したい場合。

{
  "schedule_time": "08:00",
  "schedule_week": [
    1,
    1,
    1,
    1,
    1,
    1,
    1
  ],
  "title": "すごいがんばるタスク2"
}
db.tasks.find({"schedule_week.0": 1})       // OK
db.tasks.find({schedule_week.0: 1})         // NG
db.tasks.find({"schedule_week[0]": 1})      // NG
db.tasks.find({schedule_week[0]: 1})        // NG
16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16