スキーマ
Schema()
Schema.Types
Schema.indexTypes
Schema.prototype.add()
Schema.prototype.alias()
Schema.prototype.childSchemas
Schema.prototype.clearIndexes()
Schema.prototype.clone()
Schema.prototype.discriminator()
Schema.prototype.eachPath()
Schema.prototype.get()
Schema.prototype.index()
Schema.prototype.indexes()
Schema.prototype.loadClass()
Schema.prototype.method()
Schema.prototype.obj
Schema.prototype.omit()
Schema.prototype.path()
Schema.prototype.pathType()
Schema.prototype.paths
Schema.prototype.pick()
Schema.prototype.plugin()
Schema.prototype.post()
Schema.prototype.pre()
Schema.prototype.queue()
Schema.prototype.remove()
Schema.prototype.removeIndex()
Schema.prototype.removeVirtual()
Schema.prototype.requiredPaths()
Schema.prototype.searchIndex()
Schema.prototype.set()
Schema.prototype.static()
Schema.prototype.virtual()
Schema.prototype.virtualpath()
Schema.prototype.virtuals
Schema.reserved
Schema()
パラメータ
[definition]
«オブジェクト|スキーマ|配列» スキーマパスを記述するオブジェクト、コピーするスキーマ、またはオブジェクトとスキーマの配列のいずれか[options]
«オブジェクト»
継承
スキーマコンストラクタ。
例
const child = new Schema({ name: String });
const schema = new Schema({ name: String, age: Number, children: [child] });
const Tree = mongoose.model('Tree', schema);
// setting schema options
new Schema({ name: String }, { id: false, autoIndex: false })
オプション
- autoIndex: 真偽値 - デフォルトはnull(接続のautoIndexオプションを使用することを意味します)
- autoCreate: 真偽値 - デフォルトはnull(接続のautoCreateオプションを使用することを意味します)
- bufferCommands: 真偽値 - デフォルトはtrue
- bufferTimeoutMS: 数値 - デフォルトは10000(10秒)。
bufferCommands
が有効な場合、Mongooseがエラーを発生させる前に接続の再確立を待機する時間。 - capped: 真偽値 | 数値 | オブジェクト - デフォルトはfalse
- collection: 文字列 - デフォルトなし
- discriminatorKey: 文字列 - デフォルトは
__t
- id: 真偽値 - デフォルトはtrue
- _id: 真偽値 - デフォルトはtrue
- minimize: 真偽値 - 手動で呼び出されたときのdocument#toObjectの動作を制御します - デフォルトはtrue
- read: 文字列
- readConcern: オブジェクト - デフォルトはnull、すべてのクエリにデフォルトの読み取りコンサーンを設定するために使用します。
- writeConcern: オブジェクト - デフォルトはnull、MongoDBサーバーのデフォルトの書き込みコンサーン設定をオーバーライドするために使用します
- shardKey: オブジェクト - デフォルトは
null
- strict: 真偽値 - デフォルトはtrue
- strictQuery: 真偽値 - デフォルトはfalse
- toJSON - オブジェクト - デフォルトなし
- toObject - オブジェクト - デフォルトなし
- typeKey - 文字列 - デフォルトは 'type'
- validateBeforeSave - 真偽値 - デフォルトは
true
- validateModifiedOnly - 真偽値 - デフォルトは
false
- versionKey: 文字列またはオブジェクト - デフォルトは"__v"
- optimisticConcurrency: 真偽値 - デフォルトはfalse。楽観的同時実行制御を有効にするにはtrueに設定します。
- collation: オブジェクト - デフォルトはnull(照合を使用しないことを意味します)
- timeseries: オブジェクト - デフォルトはnull(このスキーマのコレクションは時系列コレクションではないことを意味します)
- selectPopulatedPaths: 真偽値 - デフォルトは
true
- skipVersioning: オブジェクト - バージョニングから除外するパス
- timestamps: オブジェクトまたは真偽値 - デフォルトは
false
。 trueの場合、MongooseはスキーマにcreatedAt
およびupdatedAt
プロパティを追加し、それらのプロパティを管理します。 - pluginTags: 文字列の配列 - デフォルトは
undefined
。設定されていて、プラグインがtags
オプションで呼び出された場合、一致するタグを持つスキーマにのみそのプラグインを適用します。 - virtuals: オブジェクト - 定義する仮想、
.virtual
のエイリアス - [collectionOptions]:
Model.createCollection()
を呼び出すか、autoCreate
をtrueに設定したときにcreateCollection()
に渡されるオプションを持つオブジェクト。
ネストされたスキーマのオプション
excludeIndexes
: 真偽値 - デフォルトはfalse
。true
の場合、このスキーマのパスにインデックスを作成しません。
注意
スキーマをネストする場合(上記の例ではchildren
)、常に子スキーマを親に渡す前に宣言してください。
Schema.Types
タイプ
- «プロパティ»
さまざまな組み込みMongooseスキーマタイプ。
例
const mongoose = require('mongoose');
const ObjectId = mongoose.Schema.Types.ObjectId;
タイプ
この公開されている`Mixed` SchemaTypeへのアクセスを使用して、スキーマで使用できます。
const Mixed = mongoose.Schema.Types.Mixed;
new mongoose.Schema({ _user: Mixed })
Schema.indexTypes
タイプ
- «プロパティ»
許可されるインデックスタイプ
Schema.prototype.add()
パラメータ
obj
«オブジェクト|スキーマ» パスを追加するプレーンオブジェクト、または別のスキーマ[prefix]
«文字列» 新しく追加されたパスのプレフィックスとなるパス
戻り値
- «スキーマ» スキーマインスタンス
キパス/スキーマタイプのペアをこのスキーマに追加します。
例
const ToySchema = new Schema();
ToySchema.add({ name: 'string', color: 'string', price: 'number' });
const TurboManSchema = new Schema();
// You can also `add()` another schema and copy over all paths, virtuals,
// getters, setters, indexes, methods, and statics.
TurboManSchema.add(ToySchema).add({ year: Number });
Schema.prototype.alias()
パラメータ
path
«文字列» エイリアスにする実際のパスalias
«文字列|文字列配列»path
のエイリアスとして使用するパス
戻り値
- «スキーマ» スキーマインスタンス
path
のエイリアスを追加します。これは、`alias`を取得または設定することが、`path`を取得または設定することと同等であることを意味します。
例
const toySchema = new Schema({ n: String });
// Make 'name' an alias for 'n'
toySchema.alias('n', 'name');
const Toy = mongoose.model('Toy', toySchema);
const turboMan = new Toy({ n: 'Turbo Man' });
turboMan.name; // 'Turbo Man'
turboMan.n; // 'Turbo Man'
turboMan.name = 'Turbo Man Action Figure';
turboMan.n; // 'Turbo Man Action Figure'
await turboMan.save(); // Saves { _id: ..., n: 'Turbo Man Action Figure' }
Schema.prototype.childSchemas
タイプ
- «プロパティ»
子スキーマ(ドキュメント配列と単一のネストされたサブドキュメントから)と対応するコンパイル済みモデルの配列。配列の各要素は、`schema`と`model`の2つのプロパティを持つオブジェクトです。
このプロパティは、通常、プラグインの作成者と上級ユーザーにのみ役立ちます。mongooseを使用するために、このプロパティと対話する必要はまったくありません。
Schema.prototype.clearIndexes()
戻り値
- «スキーマ» スキーマインスタンス
このスキーマからすべてのインデックスを削除します。
clearIndexesは、スキーマオブジェクトからインデックスのみを削除します。 MongoDBのインデックスには**影響しません**。
例
const ToySchema = new Schema({ name: String, color: String, price: Number });
ToySchema.index({ name: 1 });
ToySchema.index({ color: 1 });
// Remove all indexes on this schema
ToySchema.clearIndexes();
ToySchema.indexes(); // []
Schema.prototype.clone()
戻り値
- «スキーマ» クローンされたスキーマ
スキーマのディープコピーを返します
例
const schema = new Schema({ name: String });
const clone = schema.clone();
clone === schema; // false
clone.path('name'); // SchemaString { ... }
Schema.prototype.discriminator()
パラメータ
name
«文字列» ディスクリミネータの名前schema
«スキーマ» 識別されるスキーマ[options]
«オブジェクト» ディスクリミネータオプション[options.value]
«文字列»discriminatorKey
プロパティに格納されている文字列。指定しない場合、Mongooseは`name`パラメータを使用します。[options.clone=true]
«真偽値» デフォルトでは、`discriminator()`は指定された`schema`を複製します。複製をスキップするには、`false`に設定します。[options.overwriteModels=false]
«真偽値» デフォルトでは、Mongooseは別のディスクリミネータと同じ名前のディスクリミネータを定義することを許可していません。これを設定すると、同じ名前のディスクリミネータを上書きできます。[options.mergeHooks=true]
«真偽値» デフォルトでは、Mongooseはベーススキーマのフックとディスクリミネータスキーマのフックをマージします。このオプションを`false`に設定すると、Mongooseはディスクリミネータスキーマのフックを代わりに使用します。[options.mergePlugins=true]
«真偽値» デフォルトでは、Mongooseはベーススキーマのプラグインとディスクリミネータスキーマのプラグインをマージします。このオプションを`false`に設定すると、Mongooseはディスクリミネータスキーマのプラグインを代わりに使用します。
戻り値
- «スキーマ» スキーマインスタンス
既存のスキーマにディスクリミネータを適用することにより、スキーマを継承します。
例
const eventSchema = new mongoose.Schema({ timestamp: Date }, { discriminatorKey: 'kind' });
const clickedEventSchema = new mongoose.Schema({ element: String }, { discriminatorKey: 'kind' });
const ClickedModel = eventSchema.discriminator('clicked', clickedEventSchema);
const Event = mongoose.model('Event', eventSchema);
Event.discriminators['clicked']; // Model { clicked }
const doc = await Event.create({ kind: 'clicked', element: '#hero' });
doc.element; // '#hero'
doc instanceof ClickedModel; // true
Schema.prototype.eachPath()
パラメータ
fn
«関数» コールバック関数
戻り値
- «スキーマ» this
Array#forEachと同様にスキーマパスを反復処理します。
コールバックには、パス名とschemaTypeインスタンスが渡されます。
例
const userSchema = new Schema({ name: String, registeredAt: Date });
userSchema.eachPath((pathname, schematype) => {
// Prints twice:
// name SchemaString { ... }
// registeredAt SchemaDate { ... }
console.log(pathname, schematype);
});
Schema.prototype.get()
パラメータ
key
«文字列» 現在の値を取得するオプションの名前
戻り値
- «任意» オプションの値
スキーマオプションを取得します。
例
schema.get('strict'); // true
schema.set('strict', false);
schema.get('strict'); // false
Schema.prototype.index()
パラメータ
fields
«オブジェクト» インデックスを作成するフィールド。順序とともに、使用可能な値: `1 | -1 | '2d' | '2dsphere' | 'geoHaystack' | 'hashed' | 'text'`[options]
«オブジェクト» MongoDBドライバーの`createIndex()`関数に渡すオプション[options.expires=null]
«文字列|数値» Mongoose固有の糖衣構文。上記のリンクの`expireAfterSeconds`の秒に変換するためにmsを使用します `expires`オプション。[options.language_override=null]
«文字列» テキストインデックスの解析に`language`の代わりに指定されたフィールドを使用するようにmongodbに指示します。
Schema.prototype.indexes()
戻り値
- «配列» スキーマで定義されているインデックスのリスト
このスキーマが`schema.index()`を介して、またはパスのオプションで`index:true`によって宣言するインデックスのリストを返します。インデックスは配列`[spec、options]`として表されます。
例
const userSchema = new Schema({
email: { type: String, required: true, unique: true },
registeredAt: { type: Date, index: true }
});
// [ [ { email: 1 }, { unique: true, background: true } ],
// [ { registeredAt: 1 }, { background: true } ] ]
userSchema.indexes();
プラグインはこの関数の戻り値を使用してスキーマのインデックスを変更できます。たとえば、以下のプラグインは、デフォルトですべてのインデックスを一意にします。
function myPlugin(schema) {
for (const index of schema.indexes()) {
if (index[1].unique === undefined) {
index[1].unique = true;
}
}
}
Schema.prototype.loadClass()
パラメータ
model
«関数» ロードするクラス[virtualsOnly]
«真偽値» trueの場合、メソッドまたは静的ではなく、クラスからのみ仮想を取得します
ES6クラスをスキーマにロードします。 セッター + ゲッター、静的メソッド、およびインスタンスメソッドをスキーマ仮想、静的、およびメソッドにマップします。
例
const md5 = require('md5');
const userSchema = new Schema({ email: String });
class UserClass {
// `gravatarImage` becomes a virtual
get gravatarImage() {
const hash = md5(this.email.toLowerCase());
return `https://www.gravatar.com/avatar/${hash}`;
}
// `getProfileUrl()` becomes a document method
getProfileUrl() {
return `https://mysite.com/${this.email}`;
}
// `findByEmail()` becomes a static
static findByEmail(email) {
return this.findOne({ email });
}
}
// `schema` will now have a `gravatarImage` virtual, a `getProfileUrl()` method,
// and a `findByEmail()` static
userSchema.loadClass(UserClass);
Schema.prototype.method()
パラメータ
name
«文字列|オブジェクト» 単一の関数のメソッド名、または「文字列と関数」のペアのオブジェクト。[fn]
«関数» 単一関数定義における関数。
このスキーマからコンパイルされたモデルから構築されたドキュメントにインスタンスメソッドを追加します。
例
const schema = kittySchema = new Schema(..);
schema.method('meow', function () {
console.log('meeeeeoooooooooooow');
})
const Kitty = mongoose.model('Kitty', schema);
const fizz = new Kitty;
fizz.meow(); // meeeeeooooooooooooow
名前/関数ペアのハッシュが唯一の引数として渡された場合、各名前/関数ペアはメソッドとして追加されます。
schema.method({
purr: function () {}
, scratch: function () {}
});
// later
const fizz = new Kitty;
fizz.purr();
fizz.scratch();
注: Schema.method()
はインスタンスメソッドを Schema.methods
オブジェクトに追加します。 ガイド に示されているように、インスタンスメソッドを Schema.methods
オブジェクトに直接追加することもできます。
Schema.prototype.obj
タイプ
- «プロパティ»
スキーマコンストラクタに渡された元のオブジェクト
例
const schema = new Schema({ a: String }).add({ b: String });
schema.obj; // { a: String }
Schema.prototype.omit()
パラメータ
paths
«文字列配列» 新しいスキーマで省略するパスのリスト[options]
«オブジェクト» 新しいスキーマコンストラクタに渡すオプション (new Schema(.., Options)
と同じ)。設定されていない場合は、デフォルトでthis.options
になります。
戻り値
- «スキーマ»
元のスキーマから省略されたパスを除いたパスを持つ新しいスキーマを返します。
このメソッドは、Mongoose スキーマのための Lodash の omit()
関数 に類似しています。
例
const schema = Schema({ name: String, age: Number });
// Creates a new schema omitting the `age` path
const newSchema = schema.omit(['age']);
newSchema.path('name'); // SchemaString { ... }
newSchema.path('age'); // undefined
Schema.prototype.path()
パラメータ
path
«文字列» 取得/設定するパスの名前[obj]
«オブジェクト» パスを設定する型。パスが指定されている場合はパスが設定され、そうでない場合はパスが取得されます。
スキーマパスを取得/設定します。
パスを設定します (アリティが 2 の場合)。パスを取得します (アリティが 1 の場合)。
例
schema.path('name') // returns a SchemaType
schema.path('name', Number) // changes the schemaType of `name` to Number
Schema.prototype.pathType()
パラメータ
path
«文字列»
戻り値
- «文字列»
このスキーマの path
の pathType を返します。
パスが与えられた場合、それが実際のパス、仮想パス、ネストされたパス、またはアドホック/未定義のパスであるかどうかを返します。
例
const s = new Schema({ name: String, nested: { foo: String } });
s.virtual('foo').get(() => 42);
s.pathType('name'); // "real"
s.pathType('nested'); // "nested"
s.pathType('foo'); // "virtual"
s.pathType('fail'); // "adhocOrUndefined"
Schema.prototype.paths
タイプ
- «プロパティ»
このスキーマで定義されたパス。キーはこのスキーマのトップレベルパスであり、値は SchemaType クラスのインスタンスです。
例
const schema = new Schema({ name: String }, { _id: false });
schema.paths; // { name: SchemaString { ... } }
schema.add({ age: Number });
schema.paths; // { name: SchemaString { ... }, age: SchemaNumber { ... } }
Schema.prototype.pick()
パラメータ
paths
«文字列配列» 新しいスキーマで選択するパスのリスト[options]
«オブジェクト» 新しいスキーマコンストラクタに渡すオプション (new Schema(.., Options)
と同じ)。設定されていない場合は、デフォルトでthis.options
になります。
戻り値
- «スキーマ»
このスキーマから選択された paths
を持つ新しいスキーマを返します。
このメソッドは、Mongoose スキーマのための Lodash の pick()
関数 に類似しています。
例
const schema = Schema({ name: String, age: Number });
// Creates a new schema with the same `name` path as `schema`,
// but no `age` path.
const newSchema = schema.pick(['name']);
newSchema.path('name'); // SchemaString { ... }
newSchema.path('age'); // undefined
Schema.prototype.plugin()
パラメータ
plugin
«関数» プラグインのコールバック[opts]
«オブジェクト» プラグインに渡すオプション[opts.deduplicate=false]
«真偽値» true の場合、重複するプラグイン (===
を使用した同じfn
引数) を無視します。
参照
このスキーマのプラグインを登録します。
例
const s = new Schema({ name: String });
s.plugin(schema => console.log(schema.path('name').path));
mongoose.model('Test', s); // Prints 'name'
または、オプション付きで
const s = new Schema({ name: String });
s.plugin((schema, opts) => console.log(opts.text, schema.path('name').path), { text: "Schema Path Name:" });
mongoose.model('Test', s); // Prints 'Schema Path Name: name'
Schema.prototype.post()
パラメータ
methodName
«文字列|正規表現|文字列配列» メソッド名またはメソッド名に一致する正規表現[options]
«オブジェクト»[options.document]
«真偽値»name
がドキュメントとクエリミドルウェアの両方のフックである場合、ドキュメントミドルウェアで実行するにはtrue
に設定します。[options.query]
«真偽値»name
がドキュメントとクエリミドルウェアの両方のフックである場合、クエリミドルウェアで実行するにはtrue
に設定します。fn
«関数» コールバック
参照
ドキュメントのポストフックを定義します。
const schema = new Schema(..);
schema.post('save', function (doc) {
console.log('this fired after a document was saved');
});
schema.post('find', function(docs) {
console.log('this fired after you ran a find query');
});
schema.post(/Many$/, function(res) {
console.log('this fired after you ran `updateMany()` or `deleteMany()`');
});
const Model = mongoose.model('Model', schema);
const m = new Model(..);
m.save(function(err) {
console.log('this fires after the `post` hook');
});
m.find(function(err, docs) {
console.log('this fires after the post find hook');
});
Schema.prototype.pre()
パラメータ
methodName
«文字列|正規表現|文字列配列» メソッド名またはメソッド名に一致する正規表現[options]
«オブジェクト»[options.document]
«真偽値»name
がドキュメントとクエリミドルウェアの両方のフックである場合、ドキュメントミドルウェアで実行するにはtrue
に設定します。たとえば、Query#deleteOne()
ではなくDocument#deleteOne()
にこのフックを適用するには、options.document
をtrue
に設定します。[options.query]
«真偽値»name
がドキュメントとクエリミドルウェアの両方のフックである場合、クエリミドルウェアで実行するにはtrue
に設定します。callback
«関数»
モデルのプリフックを定義します。
例
const toySchema = new Schema({ name: String, created: Date });
toySchema.pre('save', function(next) {
if (!this.created) this.created = new Date;
next();
});
toySchema.pre('validate', function(next) {
if (this.name !== 'Woody') this.name = 'Woody';
next();
});
// Equivalent to calling `pre()` on `find`, `findOne`, `findOneAndUpdate`.
toySchema.pre(/^find/, function(next) {
console.log(this.getFilter());
});
// Equivalent to calling `pre()` on `updateOne`, `findOneAndUpdate`.
toySchema.pre(['updateOne', 'findOneAndUpdate'], function(next) {
console.log(this.getFilter());
});
toySchema.pre('deleteOne', function() {
// Runs when you call `Toy.deleteOne()`
});
toySchema.pre('deleteOne', { document: true }, function() {
// Runs when you call `doc.deleteOne()`
});
Schema.prototype.queue()
パラメータ
name
«文字列» 後で呼び出すドキュメントメソッドの名前args
«配列» メソッドに渡す引数
メソッド呼び出しをキューに追加します。
例
schema.methods.print = function() { console.log(this); };
schema.queue('print', []); // Print the doc every one is instantiated
const Model = mongoose.model('Test', schema);
new Model({ name: 'test' }); // Prints '{"_id": ..., "name": "test" }'
Schema.prototype.remove()
パラメータ
path
«文字列|配列» 削除するパス
戻り値
- «スキーマ» スキーマインスタンス
指定された path
(または [paths
]) を削除します。
例
const schema = new Schema({ name: String, age: Number });
schema.remove('name');
schema.path('name'); // Undefined
schema.path('age'); // SchemaNumber { ... }
または、配列として
schema.remove(['name', 'age']);
schema.path('name'); // Undefined
schema.path('age'); // Undefined
Schema.prototype.removeIndex()
パラメータ
index
«オブジェクト|文字列» 名前またはインデックス仕様
戻り値
- «スキーマ» スキーマインスタンス
名前またはインデックス仕様でインデックスを削除します。
removeIndex はスキーマオブジェクトからインデックスのみを削除します。MongoDB のインデックスには**影響しません**。
例
const ToySchema = new Schema({ name: String, color: String, price: Number });
// Add a new index on { name, color }
ToySchema.index({ name: 1, color: 1 });
// Remove index on { name, color }
// Keep in mind that order matters! `removeIndex({ color: 1, name: 1 })` won't remove the index
ToySchema.removeIndex({ name: 1, color: 1 });
// Add an index with a custom name
ToySchema.index({ color: 1 }, { name: 'my custom index name' });
// Remove index by name
ToySchema.removeIndex('my custom index name');
Schema.prototype.removeVirtual()
パラメータ
path
«文字列|配列» 削除する仮想パス。
指定された仮想パスをスキーマから削除します。
Schema.prototype.requiredPaths()
パラメータ
invalidate
«真偽値» キャッシュを更新する
戻り値
- «配列»
このスキーマで必須のパス文字列の配列を返します。
例
const s = new Schema({
name: { type: String, required: true },
age: { type: String, required: true },
notes: String
});
s.requiredPaths(); // [ 'age', 'name' ]
Schema.prototype.searchIndex()
パラメータ
description
«オブジェクト»name
とdefinition
を含むインデックスオプションdescription.name
«文字列»description.definition
«オブジェクト»
戻り値
- «スキーマ» スキーマインスタンス
Mongoose が Model.createSearchIndex()
を使用して作成する Atlas 検索インデックス を追加します。この関数は、MongoDB Atlas に接続されている場合にのみ機能します。
例
const ToySchema = new Schema({ name: String, color: String, price: Number });
ToySchema.searchIndex({ name: 'test', definition: { mappings: { dynamic: true } } });
Schema.prototype.set()
パラメータ
key
«文字列» 値を設定するオプションの名前[value]
«オブジェクト» オプションに設定する値。渡されない場合、オプションはデフォルトにリセットされます。[tags]
«文字列配列» key が 'read' の場合に読み取り設定に追加するタグ
参照
スキーマオプションを設定します。
例
schema.set('strict'); // 'true' by default
schema.set('strict', false); // Sets 'strict' to false
schema.set('strict'); // 'false'
Schema.prototype.static()
パラメータ
name
«文字列|オブジェクト» 単一の関数のメソッド名、または「文字列と関数」のペアのオブジェクト。[fn]
«関数» 単一関数定義における関数。
参照
このスキーマからコンパイルされたモデルに静的「クラス」メソッドを追加します。
例
const schema = new Schema(..);
// Equivalent to `schema.statics.findByName = function(name) {}`;
schema.static('findByName', function(name) {
return this.find({ name: name });
});
const Drink = mongoose.model('Drink', schema);
await Drink.findByName('LaCroix');
名前/関数ペアのハッシュが唯一の引数として渡された場合、各名前/関数ペアはメソッドとして追加されます。
schema.static({
findByName: function () {..}
, findByCost: function () {..}
});
const Drink = mongoose.model('Drink', schema);
await Drink.findByName('LaCroix');
await Drink.findByCost(3);
名前/関数ペアのハッシュが唯一の引数として渡された場合、各名前/関数ペアはスタティックとして追加されます。
Schema.prototype.virtual()
パラメータ
name
«文字列» 仮想の名前[options]
«オブジェクト»[options.ref]
«文字列|モデル» モデル名またはモデルインスタンス。これを populate virtual としてマークします。[options.localField]
«文字列|関数» populate virtual に必要です。詳細については、populate virtual のドキュメント を参照してください。[options.foreignField]
«文字列|関数» populate virtual に必要です。詳細については、populate virtual のドキュメント を参照してください。[options.justOne=false]
«真偽値|関数» populate virtual でのみ機能します。真値 の場合、単一のドキュメントまたはnull
になります。そうでない場合、populate virtual は配列になります。[options.count=false]
«真偽値» populate virtual でのみ機能します。真値 の場合、この populate virtual はpopulate()
するときにドキュメント自体ではなくドキュメントの数を格納します。[options.get=null]
«関数|null» populate されたドキュメントを変換するために、この仮想に ゲッター を追加します。[options.match=null]
«オブジェクト|関数» デフォルトのmatch
オプションを populate に適用 し、populate クエリに追加のフィルタを追加します。
戻り値
- «仮想タイプ»
指定された名前で仮想タイプを作成します。
Schema.prototype.virtualpath()
パラメータ
name
«文字列» 取得する仮想の名前
戻り値
- «仮想タイプ,null»
指定された name
の仮想タイプを返します。
Schema.prototype.virtuals
タイプ
- «プロパティ»
このスキーマで定義されているすべての仮想を含むオブジェクト。オブジェクトのキーは仮想パスであり、値は VirtualType
のインスタンスです。
このプロパティは、通常、プラグインの作成者と上級ユーザーにのみ役立ちます。mongooseを使用するために、このプロパティと対話する必要はまったくありません。
例
const schema = new Schema({});
schema.virtual('answer').get(() => 42);
console.log(schema.virtuals); // { answer: VirtualType { path: 'answer', ... } }
console.log(schema.virtuals['answer'].getters[0].call()); // 42
Schema.reserved
タイプ
- «プロパティ»
予約済みドキュメントキー。
このオブジェクトのキーは、Mongoose/Mongoose プラグインの機能を損なう可能性があるため、スキーマ宣言で警告される名前です。これらのプロパティ名のいずれかを使用して new Schema()
でスキーマを作成すると、Mongoose は警告をログに記録します。
- _posts
- _pres
- collection
- emit
- errors
- get
- init
- isModified
- isNew
- listeners
- modelName
- on
- once
- populated
- prototype
- remove
- removeListener
- save
- schema
- toObject
- validate
注: これらの用語をメソッド名として使用することは許可されていますが、既存の Mongoose ドキュメントメソッドを踏みつける可能性があるため、自己責任で使用してください。
const schema = new Schema(..);
schema.methods.init = function () {} // potentially breaking