Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 为什么我的项目列表在多次更新后排序不正确?_Mongodb_Sorting_Meteor - Fatal编程技术网

Mongodb 为什么我的项目列表在多次更新后排序不正确?

Mongodb 为什么我的项目列表在多次更新后排序不正确?,mongodb,sorting,meteor,Mongodb,Sorting,Meteor,我正在使用Meteor,我有一个项目列表,如: 待办事项 待办事项B 待办事项C 待办事项 但是在一个接一个地调用多个更新之后: Todos.find().forEach(function(todo) { Todos.update(todo._id, {$set: { strength:s, retention:r, }}, function(err, res){

我正在使用Meteor,我有一个项目列表,如:

待办事项

待办事项B

待办事项C

待办事项

但是在一个接一个地调用多个更新之后:

Todos.find().forEach(function(todo) {
    Todos.update(todo._id, {$set: {  
                strength:s,
                retention:r,    
                }}, 
        function(err, res){
            if(err){throw err}
            console.log('updated '+res+' doc');
    })  
})
待办事项

待办事项

待办事项C

待办事项B

列表顺序变得混乱。如果我刷新它,它会再次正常并进行相应的排序。为什么会这样

Template.listsShow.helpers({
    editing: function() {
        return Session.get(EDITING_KEY);
    },

    todosReady: function() {
        return Router.current().todosHandle.ready();
    },

    todos: function(listId) {
        var obj =  Todos.find({listId: listId}, {sort: {createdAt : 1}});
        return obj;
    }
});

//Server Side 
Meteor.publish('todos', function(listId) {
    check(listId, String);
    return Todos.find({listId: listId});
});





{
    "_id" : "6pELT5pmGoXQhh2eG",
    "createdAt" : ISODate("2016-01-02T23:58:12.236Z")
}
{
    "_id" : "4ES3hbJX76nLCJGGL",
    "createdAt" : ISODate("2016-01-02T23:58:12.236Z")
}
{
    "_id" : "NzModCoCHcbWdWo22",
    "createdAt" : ISODate("2016-01-02T23:58:12.236Z")
}
{
    "_id" : "tzgK3EdMrBi8SbGBn",
    "createdAt" : ISODate("2016-01-02T23:58:12.236Z")

根据我们上面的对话,问题似乎与以下事实有关:
createdAt
的几个文档具有相同的值。因此,仅在该字段上排序将导致任意排序。如果文档是从脚本生成的,您可以尝试将日期随机化。此外,您可以对多个字段进行排序,例如:
{sort:{createdAt:1,message:1}

请包含用于呈现todo文档的帮助程序。你在那个助手中应用了排序吗?@DavidWeldon是的,我想是的,我在上面添加了它。这似乎很接近我的问题,但我不确定如何在助手中实现Tracker.autorun如何编写
createdAt
?可能是您意外地添加了一个更新钩子,它修改了
createdAt
?是的,因为创建日期都是相同的,所以它们将被仲裁排序。也许可以尝试
{sort:{createdAt:1,message:1}
或其他方法。