次のようなドキュメントを含むコレクションがあります。
{
_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()
これは少し不格好に思えますが、ドライバーで実行できる検索魔法がある場合は。