在引用另一个模式的MongoDB模式上创建一个文本索引
Create a text index on MongoDB schema which references another schema
我正在尝试使用猫鼬向某个模式添加索引以进行文本搜索。 如果我将文本索引添加到单个字段,它可以正常工作,对于复合索引也可以。例如,这里提供的答案很棒:
全文搜索与猫鼬的重量
但是,我正在尝试向引用其他架构的字段添加索引。例如,我的模型如下所示:
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);
}
}
);
}
有没有人对如何为"出版商"和"作者"字段添加文本索引有任何建议,我正在使用"填充"mongodb 方法来提取这些架构的数据。
我认为
,您正在寻找的是连接数据表并针对该数据的总和执行查询的能力。这是你需要一个关系数据库的东西,而MongoDB不是。
因此,我建议您改变搜索方式的方法,例如,在作者和标题中搜索关键字,而不是尝试同时搜索整个数据集。
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- 用javascript创建一个看起来正常分布的模式
- 想要打开从链接到另一个页面的模式弹出窗口
- 如何在同一页面上的多个按钮上打开一个引导模式
- 这是一个新的javascript工厂模式吗
- Mongoose模式:强制创建一个对象数组
- Bootbox,两个模式窗口-一个在另一个之上
- 仪表板中的小部件和设置需要一个可维护的Javascript回发模式
- 在一个模式AjAX编码器中显示不同的Gallery
- 如何使用jQuery打开一个链接,它的末尾有一个确切的模式
- 我试图使用引导模式类来制作一个弹出注册表单,但弹出没有'不起作用
- 一个页面中有多个引导模式
- 我如何创建一个Chrome应用程序,有效地充当信息亭模式下的启动页面
- 对象绑定模式的rest属性应该是最后一个
- 用JavaScript制作一个按钮的动画,从按钮到屏幕中心弹出一个模式对话框
- 弹出模式jquery播放现有的嵌入youtube视频时,试图播放另一个
- 多个引导模式一个接一个
- 设计模式——一个JavaScript模块的多个实例