簡體   English   中英

填充字段上的 Mongo 文本索引

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM