1

この人に何かが起こった年を含むタイムライン配列を持つ人のコレクションがあります。たとえば、生まれた年は次のようになります。

db.people.insert({
  "timeline": [
    { "born_year": 1999 },
    { "other_event": 2005 }
  ]
});

このコレクションで 1999 年生まれの人をクエリできます。

db.people.find({
  "timeline": { $in: [ { "born_year": 1999 } ] }
});

ただし、$lt を使用して 2000 年より前に生まれた人をクエリすると、まったく結果が得られません。

db.people.find({
  "timeline": { $in: [ { "born_year": { $lt: 2000 } } ] }
});

ここで私が間違っていることを誰かに説明してもらえますか?

4

1 に答える 1

2

要素全体をオブジェクトとして一致させるのではなく、ドット表記を使用して特定の要素のプロパティをターゲットにする必要があります。

db.people.find({
  "timeline.born_year": { $lt: 2000 }
});

これにより、値が 2000 未満timelineのプロパティを持つ配列要素を持つすべてのドキュメントが検索されます。born_year

正確な比較のために:

db.people.find({
  "timeline.born_year": 1999
});
于 2013-09-19T21:15:42.350 に答える