mongoDB 指定したデータ数の配列があるドキュメントを取得する
mongoDBで、指定したデータ数の配列があるドキュメントを取得する手順を記述してます。「$size」に取得したいデータ数を指定刷ることで可能です。実際に実行した結果も記載してます。
環境
- OS CentOS Stream release 9
- MongoDB 6.0.2
手順
指定したデータ数の配列があるドキュメントを取得するには、「$size」を使用します。
db.コレクション名.find( {フィールド名:{ $size: 数値 }} )
実際に、以下のデータベース「hoge」にある「bar」というコレクション(テーブル)のドキュメント(レコード)を使用して動作を確認してみます。
> use hoge
> db.bar.find()
[
{
_id: ObjectId("6396e5a7c914f06e4f31575e"),
name: 'bar1',
tags: [ 'japan', 'a' ],
qty: [
{ size: 'S', num: 10, color: 'blue' },
{ size: 'M', num: 100, color: 'blue' },
{ size: 'L', num: 100, color: 'green' }
]
},
{
_id: ObjectId("6396e640c914f06e4f31575f"),
name: 'bar2',
tags: [ 'tai', 'b' ],
qty: [ { size: 'M', num: 15, color: 'red' } ]
},
{
_id: ObjectId("6396e667c914f06e4f315760"),
name: 'bar3',
tags: [ 'usa', 'c' ],
qty: [
{ size: 'M', num: 20, color: 'red' },
{ size: 'LL', num: 200, color: 'yellow' },
{ size: 'XL', num: 250, color: 'blue' }
]
},
{
_id: ObjectId("6396e6cac914f06e4f315761"),
name: 'bar3',
tags: [ 'usa', 'c', 'canada' ],
qty: [
{ size: 'M', num: 20, color: 'red' },
{ size: 'LL', num: 200, color: 'yellow' },
{ size: 'XL', num: 250, color: 'blue' }
]
}
]
「tags」の配列データが3のものを抽出してみます。
> db.bar.find( {tags: { $size:3 }})
[
{
_id: ObjectId("6396e6cac914f06e4f315761"),
name: 'bar3',
tags: [ 'usa', 'c', 'canada' ],
qty: [
{ size: 'M', num: 20, color: 'red' },
{ size: 'LL', num: 200, color: 'yellow' },
{ size: 'XL', num: 250, color: 'blue' }
]
}
]
取得されていることが、確認できます。
マイナス値や文字列を指定するとエラーとなります。
> db.bar.find( {tags: { $size:-1 }})
MongoServerError: Failed to parse $size. Expected a non-negative number in: $size: -1
> db.bar.find( {tags: { $size:"3" }})
MongoServerError: Failed to parse $size. Expected a number in: $size: "3"
mongo5の場合は、以下のエラーとなります。
> db.bar.find( {tags: { $size:-1 }})
Error: error: {
"ok" : 0,
"errmsg" : "$size may not be negative",
"code" : 2,
"codeName" : "BadValue"
}
> db.bar.find( {tags: { $size:"3" }})
Error: error: {
"ok" : 0,
"errmsg" : "$size needs a number",
"code" : 2,
"codeName" : "BadValue"
}
-
前の記事
ubuntu ウィンドウを最大化するショートカットキー 2022.12.24
-
次の記事
gmail メッセージ表示画面から受信一覧に戻るショートカットキー 2022.12.24
コメントを書く