2

私は次のような既存のスキーマを持っています

exports.OldCollectionSchema= new Schema({
Id: { type: Schema.ObjectId },
parentId: { type: Schema.ObjectId },
userId: { type : String }, 
userName: { type : String })

ここで、新しいフィールドを追加して、上記のコレクションを2つのシナリオで使用したいと思いました。type

タイプはシナリオaまたはシナリオbになります

だから私は古いレコードをフェッチして+type= "scenario a"し、それをページに表示したかったのです

どうしてそれは可能ですか?

4

1 に答える 1

2

Mongooseには__vバージョンを示すフィールドがあると思いますが、私はMongooseの専門家ではないので、簡単なハッキークエリを貼り付けます。

db.col.find({type: {$exists: false, $in: ['a']}});

これは基本的に次のようになります。 「シナリオがまだないすべてのレコード(基本的にはこのスキーマの前のレコード)を取得し、タイプが「a」のレコードと組み合わせます」

編集

null実際には、ここで使用するのがより良い方法です。

db.col.find({type: {$in: ['a', null]}});
于 2012-12-10T11:58:06.547 に答える