如何更新标签数组?

时间:2015-02-14 11:58:53

标签: javascript mongodb sorting meteor

无法找到更新时如何对数组进行排序。怎么了?谢谢!

这不起作用:

Template.doc.events({
    'submit form': function (event) {
        event.preventDefault();
        var newTag =  event.target.tags.value;

        if (!!newTag) { // if not empty
            MyPix.update(this._id, {
                $addToSet: {
                    'metadata.tags': {
                            $each: [ newTag ],
                    }
                },
                $sort: {
                    'metadata.tags':  1
                }
            });
        }
    }
});

错误:更新失败:访问被拒绝。限制集合中不允许运营商$ sort。

这不起作用:

Template.doc.events({
    'submit form': function (event) {
        event.preventDefault();
        var newTag =  event.target.tags.value;

        if (!!newTag) { // if not empty
            MyPix.update(this._id, {
                $addToSet: {
                    'metadata.tags': {
                            $each: [ newTag ],
                    }
                },
                $push: {
                    'metadata.tags': { 
                        $each: [ ], $sort: -1
                    }
                }
            });
        }
    }
});

错误:更新失败:MongoError:修饰符不允许使用字段名重复

1 个答案:

答案 0 :(得分:1)

在MongoDB 2.6中,您可以使用$position修饰符指定数组中$push插入值的位置。

http://docs.mongodb.org/manual/reference/operator/update/position/#up._S_position

当前版本的Meteor(1.0.3.1)并不支持2.6,但我们很快就会加入支持。在客户端上使用$position(更确切地说,在minimongo中),需要将$position的支持添加到minimongo。我们欢迎拉取请求。