[英]Mongo text index on populated fields
我只是在學習使用 Mongoose/MongoDB 進行索引,我不知道為什么這不起作用。
這是我的架構
const timeSchema = new mongoose.Schema({
actionId:{
type:String,
required:true
},
start: {
type: Date
},
end: {
type: Date
},
user:{type : mongoose.Schema.Types.ObjectId, ref : 'User'},
task:{type : mongoose.Schema.Types.ObjectId, ref : 'Task'},
pausedSeconds:{
type: Number,
default: 0
}
});
const Time = mongoose.model('Time', timeSchema)
我想在兩個填充字段用戶和任務中有一個文本索引,我以這種方式創建了索引
timeSchema.index({"user.name":"text","task.taskName":"text"})
這是文檔的示例
{
"pausedSeconds": 18,
"_id": "5db1dde8d5bc93526c26fa38",
"actionId": "5feaebcf-6b90-45be-8104-452d643472a0",
"user": {
"_id": "5d4af77e4b6cbf3dd8c5f3ac",
"name": "admin"
},
"task": {
"_id": "5d4aff2f61ad755154b8a1c6",
"taskName": "task 1 updated!"
},
"start": "2019-10-24T17:22:48.000Z",
"end": "2019-10-24T17:30:00.000Z"
},
我有一個問題和一個問題問題是:
我想要做的是讓所有具有“更新任務 1”(對於 task.taskName)或“admin”(對於 user.name)的文檔都這樣做
Time.find({ '$text': { '$search': "admin" } })
Time.find({ '$text': { '$search': "task 1 updated" } })
但它似乎不起作用
問題是:如果我想對字段 start,end 作為 Date 類型或字段 pausedSeconds 是 Number 類型進行文本搜索,我該怎么辦?
提前致謝
在您的查詢中,您沒有指定要搜索的屬性。 這樣做: Time.find({taskName: { '$text': { '$search': "admin" }}})
。
另外,我不確定您是否只是沒有顯示所有代碼,或者您實際上是否在查詢錯誤,但應該這樣寫:
Time.find({taskName: { '$text': { '$search': "admin" }}}).exec(function(err, times) {
if(err) return console.log(err);
console.log(times);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.