【发布时间】:2015-09-19 17:45:28
【问题描述】:
我有以下shemas:
var BrandSchema = 新架构({ 姓名: { 类型:字符串, 要求:真, 指数: { 唯一:真 }, 小写:真 }, 商标: { 类型:对象标识, 参考:'图像' } }); var FollowActionSchema = 新架构({ “行动日期”:{ 类型:日期, “默认”:日期。现在 }, '品牌': { 类型:对象标识, 参考:“品牌” }, “表演者”:{ 类型:对象标识, 参考:'用户' }, 'type': String // followUser、folloBrand、followMerchant });我想要的是让用户关注品牌,按品牌名称排序,为此我对 FollowAction 进行了查询并找到用户所做的所有 FollowAction,然后我填充品牌字段。
所以问题是我无法对品牌名称的查询进行排序,我知道这样做的唯一方法是返回所有文档并从 nodejs 应用程序中对它们进行排序。任何人都知道我该怎么做?或者我是否应该改变 shema 结构??
我做的查询是:
异步瀑布([ 功能查找操作(下一个){ 变量选项 = { 询问: { 执行者:用户 ID, $或:[{ 类型:“关注品牌” }, { 类型:'followMerchant' }] }, 投影:{ 行动日期:1, 品牌:1、 商户:1、 类型:1 }, 排序:'-actionDate', 分页:分页 }; utils.limitQuery('FollowAction', options, next); }, 函数膨胀(动作,下一个){ 总计=actions.count; 变量选项 = { 投影:{ 姓名:1, _id:1, 用户名:1 } }; async.eachSeries(actions.result, function(action, done) { 异步瀑布([ 功能膨胀动作(完成){ action.inflate(选项,完成); }, 功能 addToArray(项目,完成){ 受信任的.push({ _id:item._id, 名称:utils.capitalize(item.name || item.username), 类型:项目名称? “品牌”:“商家” }); 返回完成(空,项目); } ], 完毕); }, 下一个); } ],函数(错误){ 回调(错误,可信,总计); });【问题讨论】:
-
您是否尝试过在填充之前进行排序?
-
请问您可以在查询的地方发布您的实际代码吗?所以我们可以与我们的整合。
-
我用查询编辑了原始帖子。在填充此字段之前可以使用填充字段进行排序吗?
标签: node.js mongodb sorting mongoose