24

次のようなドキュメントを含むコレクションがあります。

{
    _id: 5,
    vals: [100, 1100, 1500]
},
{
    _id: 10,
    vals: [1100, 1700]
}

valsフィールドに次のようなドキュメントをクエリするにはどうすればよいですか。

  • 1100
  • 1700または100
  • 100および1100

私は次のような理解の魔法を使うことができます:

g = lambda codes: (
    d for d in collection.find() if any(code in d["vals"] for code in codes)
)
g([100, 1700]).next()

または、ANDの場合:

g = lambda codes: (
    d for d in collection.find() if all(code in d["vals"] for code in codes)
)
g([100, 1100]).next()

これは少し不格好に思えますが、ドライバーで実行できる検索魔法がある場合は。

4

1 に答える 1

71
yourmongocoll.find({"vals":1100})
yourmongocoll.find({"$or":[ {"vals":1700}, {"vals":100}]})
yourmongocoll.find({"$and":[ {"vals":100}, {"vals":1100}]})

MongodbAdvancedクエリを読むことをお勧めします

$in ...も便利です

于 2012-08-22T00:29:56.947 に答える