[英]mongodb regex how to match image/*
我有一個類似的架構
var MediaSchema = new Schema({
created: {
type: Date,
default: Date.now
},
user: {
type: String,
default: 'whisher',
trim: true
},
title: {
type: String,
default: '',
trim: true
},
type: {
type: String,
default: '',
trim: true
},
url: {
type: String,
default: '',
trim: true
}
});
我可以擁有的類型
圖像/ GIF:
圖像/ JPEG:
圖片/ PJPEG:
圖像/ PNG:
圖像/ SVG + XML:
圖像/例如:
但是也
應用程序/ PDF格式
視頻/ MPEG
等等
我的目標是獲取所有圖像行,因此我嘗試使用:
db.media.find( { type: /image/gif|jpeg|pjpeg|png/i } );
但是給我
SyntaxError:提供給RegExp構造函數'gif'的無效標志
那么正確的方法是什么? 有沒有使用正則表達式的更好的查詢方式?
您可以如下使用$ regex運算符:
db.collection.find({type : {$regex : "^image/.*", $options : "i"}})
您也可以不使用$ regex運算符進行查詢,如下所示:
db.collection.find({type : /.*image.*/i})
如果此查詢很頻繁,建議您添加一個新字段,使其更符合您的要求:
isImage : Boolean
或者,如果您願意,可以更一般一些:
typeGroup: Number
您將為其中一個編制索引。 例如,如果typeGroup
是任何類型的圖像, typeGroup
可以設置為1
;如果是視頻文件,則可以設置為2
。
執行正則表達式來重復匹配文件以回答相同的問題將可觀地影響應用程序的整體性能。 使用這種替代方法,您可以輕松有效地找到正確的文檔:
Media.find().where('isImage', true).exec(/* your callback */);
db.media.find( { type: /image\/gif|jpeg|pjpeg|png/i } );
但是還有更好的方法嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.