使用Mongo Middleware时,您可以按升序/降序配置多个列,如示例所示
You may also specify ascending and descending sorts together:
var options = {
sort : {
asc : 'name'
desc : ['birthday', 'home']
}
};
我想解决的问题是如何让每个列都有自己配置的排序方向。
中间件排序配置似乎只支持两个配置节点(asc& desc)。
无法执行以下操作。
var options = {
sort : {
name: 'asc',
birthday: 'desc',
home: asc
}
};
答案 0 :(得分:1)
好吧,你真正需要做的就是从Mongoose调用普通的.sort()
方法而不是插件的.order()
方法:
{ options: { start: 0, count: 3 },
results:
[ { _id: 55da9c9593d2c4ed0d26cf79, a: 1, b: 2, c: 3, __v: 0 },
{ _id: 55da9c9593d2c4ed0d26cf7c, a: 2, b: 2, c: 1, __v: 0 },
{ _id: 55da9c9593d2c4ed0d26cf7a, a: 2, b: 1, c: 4, __v: 0 } ],
total: 4 }
按正常方式返回受中间件影响的结果:
.order()
因此,影响光标的标准方法似乎最适合在这种情况下使用。
如果你真的想要,那么只需在配置中加入反映分页选项的内容。除非实际调用特定的var async = require('async'),
mongoose = require('mongoose'),
Schema = mongoose.Schema;
require('mongoose-middleware').initialize(mongoose);
mongoose.connect('mongodb://localhost/test');
var testSchema = new Schema({
a: Number,
b: Number,
c: Number
});
var Test = mongoose.model( 'Test', testSchema );
async.series(
[
function(callback) {
Test.remove({},callback);
},
function(callback) {
async.each(
[
{ a: 1, b: 2, c: 3 },
{ a: 2, b: 1, c: 4 },
{ a: 4, b: 3, c: 1 },
{ a: 2, b: 2, c: 1 }
],
function(item,callback) {
Test.create(item,callback);
},
callback
);
},
function(callback) {
Test.find().sort({ a: 1, b: -1, c: 1 }).page({
start: 0,
count: 3,
sort: {
a: 1,
b: -1,
c: 1,
}
},function(err,docs) {
console.log(docs);
callback(err);
});
}
],
function(err) {
if (err) throw err;
mongoose.disconnect();
}
);
方法,否则显然无关紧要:
{ options: { start: 0, count: 3, sort: { a: 1, b: -1, c: 1 } },
results:
[ { _id: 55da9e12c74b0e0b0eeec3cf, a: 1, b: 2, c: 3, __v: 0 },
{ _id: 55da9e12c74b0e0b0eeec3d2, a: 2, b: 2, c: 1, __v: 0 },
{ _id: 55da9e12c74b0e0b0eeec3d0, a: 2, b: 1, c: 4, __v: 0 } ],
total: 4 }
而“选项”实际上只是“被淘汰”:
{ a: 1, b: -1, c: 1 }
尽管mongoose提供了扩展语法,<div class="wrapper">
<div class="row">
<div class="col-sm-4">
<tabset>
<tab>
<tab-heading>Profile</tab-heading>
<!--Content of tab goes here-->
</tab>
<tab>
<tab-heading>Users</tab-heading>
<div class="content">
<a ng-repeat="user in users">
<user-item profile="user"></user-item>
</a>
</div>
</tab>
</tabset>
</div>
<div class="col-sm-8">
<div class="chat-box">
<a ng-repeat="message in messages">
<message-item message="message"></message-item>
</a>
</div>
</div>
</div>
</div>
是支持排序操作的标准MongoDB表单。所以它仍然有效。