我正在尝试针对此SO question
构建一个MongooseJS查询我在MongoDB中拥有的是一个名为Notifications的集合。该模型如下所示:
var NotificationSchema = new Schema({
topic: { type: String, required: true },
location: { type: String, enum: locations, required: true},
createdAt: Date,
updatedAt: Date,
notifiedAt: Date,
createdBy: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
required: true
}
});
topic
字段可能如下所示:"Apple"
或Apple
。
现在我有一系列主题,例如var topics = ["Apple", "AppleEvent", "Android", "Google"]
如果有topic
字段= Apple
的通知,则该通知应与"Apple"
和"AppleEvent"
匹配
如果有topic
字段= "Apple"
的通知,则应严格匹配"Apple"
为获得最佳性能,我该如何构建此查询?通过使用"Apple"
运算符,只需找到严格匹配$in
的通知就足够了:
Notification.find({'topic' : {$in: topics}})
我无法弄清楚如何查找*Apple*
的最佳方式(性能方面)?这是否意味着我必须对集合中的所有通知进行查询,以查看哪些通知以引号开头和结尾?