Mongoose のドキュメント取得に関して。空配列を持ったドキュメントを取得する方法。
例えば、以下のようなデータから id: 2
のデータのみ取得する。
{ id: 1, items: ['foo'] } { id: 2, items: [] }
これらのデータを Data
スキーマとすると、以下のように取得できる。
import mongoose from '../libs/mongoose' const { Schema } = mongoose // スキーマ const DataSchema = new Schema({ id: Number, items: [String], }) const Data = mongoose.model('Data', DataSchema) const data = await Data.find({ 'items.0': { $exists: false } })
items.0
が配列の最初の要素を表す。 { $exists: false }
が存在していないかどうかチェックする。
なので、最初の要素が存在していなければ という条件になる。これがつまり、空配列かどうかというチェックになる。
参考: Mongoose find all documents where array.length is greater than 0 & sort the data - stackoverflow.com