MongoDB初学者です。配列プロパティに対するクエリーの書き方についての質問です。
前提
testデータベースのemployeeコレクションに以下の2ドキュメントが格納されています。
test> db.employee.find()
javascript
1[ 2 { 3 _id: ObjectId("63c921cb13e9e5f06fece408"), 4 name: '田村', 5 age: 30, 6 skill: [ 'Java', 'Oracle', 'SQLServer', 'MongoDB' ], 7 child: [ { name: 'にこ', age: 5 }, { name: 'ゆめ', age: 3 } ] 8 }, 9 { 10 _id: ObjectId("63c921cb13e9e5f06fece409"), 11 name: '佐藤', 12 age: 23, 13 skill: [ 'JavaScript', 'Oracle', 'SQLServer' ] 14 } 15]
このとき、skill に 'JavaScript'
と 'SQLServer'
の両方が含まれるドキュメントを検索するには $all
を使って
javascript
1db.employee.find({skill: {$all: ['JavaScript', 'SQLServer']}})
とすればよいことを知りました。
実現したいこと
上記の条件の「すべて」を「いずれか」に変えた、
- skill に
'MongoDB'
または'JavaScript'
のうちの少なくとも1つが含まれている。
という条件を書こうとしています。
発生している問題・エラーメッセージ
$and
の替わりに $some
だったり $any
だったりのような条件演算子があるのかと思って調べましたがそれらしい働きをしてくれそうなものを見つけられませんでした。
試したこと
現状では以下で目的は達成できましたが、もっと短く書けないか?と考えています。よい案があればご教示ください。
javascript
1db.employee.find( 2 {$or: [ 3 {skill: {$all: ['MongoDB']}}, 4 {skill: {$all: ['JavaScript']}}, 5 ]} 6)
補足情報(FW/ツールのバージョンなど)
MongoDB v6.0.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。