【发布时间】:2015-09-27 19:30:15
【问题描述】:
我有这个MongoDB 通知模型:
- 用户:Mongo ID
- 创建:日期
- 内容:{}
- 订阅:[{用户:Mongo Id,读取:布尔}]
在NodeJS 中使用Mongoose 我创建了一个查询,该查询返回我的用户在Subscriptions 数组中的所有文档。
Notification
.find({subscriptions:{$elemMatch: {user: req.user}}})
.sort('-created')
.exec(function (err, notifications) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.jsonp(notifications);
}
});
此查询有效,并返回我想要的文档... 但我不想要这个... 此代码在返回的文档中返回所有订阅数组,包括其他用户。如果订阅数组中有 10.000 个用户,则在所有文档中返回所有用户。
如何提取数组的一部分?我希望只在订阅数组中返回我的用户。 为什么?出于安全和性能原因。
我试过这个查询:
.find({subscriptions:{$elemMatch: {user: req.user}}}, {'subscriptions.$': 1})
此查询仅返回订阅数组中的一个用户(我的用户)。但是...除了订阅数组之外没有返回任何字段...
有什么建议吗?
【问题讨论】:
标签: arrays node.js mongodb mongoose