0

より洗練された検索のためにカテゴリを追加したい既存のニュース記事セクションがあります。スキーマは次のとおりです。

var ArticleSchema = new Schema({
title: String,
body: String,
author: {
    type: Schema.Type.ObjectId,
    ref: 'User',
    required: true
},
image: String,
catagories: [{
    type: Schema.Types.ObjectId, ref: 'Catagory'
}],
meta: {
    created: {
        type: Date,
        'default': Date.now,
        set: function(val) {
            return undefined;
        }
    },
    updated: {
        type: Date,
        'default': Date.now
    }
}
});

ArticleSchema.statics.search = function (str, callback) {
var regexp = new RegExp(str, 'i');
return this.find({'$or': [{title: regexp}, {body: regexp}]}, callback);
};

module.exports = ArticleSchema;


var CatagorySchema = new mongoose.Schema({
name: { type: String, unique: true },
});

module.exports = CatagorySchema;

カテゴリを選択するためのユーザーフレンドリーな入力が必要です(チェックボックスや単純なカンマ区切りのテキスト入力など、ここで何が最適かさえわかりません)。私の質問は、この種の入力を取得し、それを記事のスキーマに変換するためのベスト プラクティスは何かということです (カテゴリが存在する場合)。誰かが私を正しい方向に向けることができれば、それは大歓迎です。ありがとう。

4

1 に答える 1

0

検索したいカテゴリ名を配列に保持する

{
  categories: ["cat1", "cat2"]
}

次に、インデックスを追加して $in クエリを実行できます。単一のクエリでカテゴリを検索することはできず、最初にすべての「カテゴリ」リンクを解決する必要があるため、現在のスキーマはあまり適切ではありません。

于 2013-08-12T12:31:45.913 に答える