Javascript 在引用其他模式的MongoDB模式上创建文本索引

Javascript 在引用其他模式的MongoDB模式上创建文本索引,javascript,node.js,mongodb,indexing,mongoose,Javascript,Node.js,Mongodb,Indexing,Mongoose,我正试图使用mongoose为文本搜索向特定模式添加索引。如果我将文本索引添加到各个字段中,效果很好,使用复合索引也可以。例如,这里提供的答案很好: 但是,我正在尝试向引用其他模式的字段添加索引。例如,我的模型如下所示: var Book = new Schema({ "title": String, "createdAt": Date, "publisher": { "type": Schema.ObjectI

我正试图使用mongoose为文本搜索向特定模式添加索引。如果我将文本索引添加到各个字段中,效果很好,使用复合索引也可以。例如,这里提供的答案很好:

但是,我正在尝试向引用其他模式的字段添加索引。例如,我的模型如下所示:

    var Book = new Schema({
        "title": String,
        "createdAt": Date,
        "publisher": {
             "type": Schema.ObjectId,
             "ref": "Publisher"
        },
        "author": {
             "type": Schema.ObjectId,
             "ref": "Author"
        },
        "isbn": String
    });
因此,在执行如下所述的搜索查询时,以下索引之类的内容不起作用:

索引:

 Book.index({"title": "text", "publisher.name": "text", "author.firstName": "text"});
搜索查询:

function searchBooks(req, res) {
    var query = req.query.searchQuery;

    Book.find({ $text: { $search: query } })
        .populate('author publisher')
        .limit(25)
        .exec(function(err, books) {
            if (err) {
                res.json(err);
            } else {
                res.json(books);
            }
        }
    );
}

如果有人对如何为“publisher”和“author”字段添加文本索引有任何建议,我将使用“populate”mongodb方法为这些模式提取数据

我认为,您需要的是连接数据表并对数据总和执行查询的能力。这需要一个关系数据库,而MongoDB不是


因此,我建议您改变搜索方式,例如在作者和标题中搜索关键词,而不是同时搜索整个数据集。

为什么人们很难理解这一点?“MongoDB不执行连接”。这是在互联网上搜索最简单的词。然而,人们每天都在问这个问题。您还应该了解mongoose
.populate()
不是联接。这只是额外的查询,看起来像是基本API的连接。也许你可以向我解释一下我到底要搜索什么。因为我不知道怎样才能达到我想要做的事情。