最佳答案
我在使用猫鼬从 MongoDB 检索数据时遇到了以下问题。
以下是我的模式:
const BookSchema = new Schema(
{
_id:Number,
title:String,
authors:[String],
subjects:[String]
}
);
你可以看到我在对象中嵌入了两个数组,让我们假设作者的内容是这样的: 作者: [“亚历克斯 · 弗格森”,“迪迪埃 · 德罗巴”,“基斯坦奴·朗拿度”,“亚历克斯”]
我要做的就是让所有的 Alex 都进入数组。
到目前为止,我已经能够得到的值,如果他们完全匹配的值。然而,如果我试图得到那些包含亚历克斯的答案总是[]。
我想知道的是,如何在不执行 map-reduce 的情况下使用 find ()来创建视图或集合,然后在其上应用 find ()。
这里的代码适用于精确匹配
Book.find( {authors:req.query.q} , function(errs, books){
if(errs){
res.send(errs);
}
res.json(books);
});
我尝试了一些事情,但是没有运气 { author: { $elemMatch: req.query.q }} { author: { $in: [ req.query.q ]}}
这个给了我一个错误,最重要的是,说是非常低效的另一个职位,我在这里发现。 { $where: this. authors.indexOf (req.query.q) ! = -1}
我还尝试了{ author: { $regex: “ ./价值/i”}}
Map-reduce 工作得很好,我需要使用另一种方法来看看哪种方法更好?
非常感谢您的帮助。我知道这很简单,但是我刚接触 NodeJS 和 Mongo,我还没能自己弄明白。