web*_*rks 4 javascript mongodb express
我有一个用 mongo 的 findOne() 返回的文档。在该文档(位置 ID 为 2)内,我们有 items 数组。里面的物品都是好听的名字。目前,这会返回所有项目,而不仅仅是 Nicename 匹配的项目。谢谢!
Menu.findOne({location:'2', 'items.nicename':req.params.whatever}).exec()
.then(function(item) {
res.render('pages/menuitem', {'item':item});
}).catch(function(err) {
console.log(err);
});Run Code Online (Sandbox Code Playgroud)
当您的参数匹配时,Mongo find/findOne/aggregate 返回整个文档,包括子文档。所以你需要告诉 Mongo,嘿,既然你找到了我的文档,我真的只想要这些部分。这就是“投影”的由来。
Menu.findOne({location:'2'},{'items':{$elemMatch: {'nicename': req.params.whatever})
Run Code Online (Sandbox Code Playgroud)
关于投影的事情是,一旦你开始构建投影,你需要告诉 mongo 你想要返回的所有键。例如,我知道您的结构中有“位置”,因此如果您也希望返回位置,则需要执行以下操作
Menu.findOne({location:'2'},{
'location':1,
'items':{$elemMatch: {'nicename': req.params.whatever}
})
Run Code Online (Sandbox Code Playgroud)
如果您需要 findOne 中的两个参数,请执行以下操作
Menu.findOne({location:'2','items.nicename':req.params.whatever},{
'location':1,
'items':{$elemMatch: {'nicename': req.params.whatever}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5354 次 |
| 最近记录: |