Mongodb findone返回值-数组操作

mongodb findone return value - array manipulation

本文关键字:数组 操作 返回值 findone Mongodb      更新时间:2023-09-26

我正在运行node.js服务器(与express &Jade)和mongodb数据库。我有一个函数,我查询mongodb使用findOne。该文档是关于用户以及具有用户偏好的数组元素的。所以schema是这样的…

var userSchema = mongoose.Schema({
  username        : { type: String, index: true },
  preferences   : [{
              _id : mongoose.Schema.ObjectId,
              title : String,
              color : String,
              shape : String,
              }]
});

UserTabs.findOne({ 'username' :  userID }, function(err, data) {
//How do I manipulate data.preferences to change array order....
}

传递数据。Preferences对象为jade并打印数组内容列表。

问题:在findOne函数中如何操作数据?这样我就可以重新安排数组元素的顺序,然后将新对象传递回jade?顺便说一句:这个数据是什么对象类型?

仅供参考-我不想改变数据库中的顺序。

如果您想要操作Mongoose查询的结果,通常最好在查询中调用lean(),这样您就可以直接获得一个可以自由修改的普通JavaScript对象。否则它就是一个不容易操作的Mongoose模型实例:

UserTabs.findOne({ 'username' :  userID }).lean().exec(function(err, data) {
    // data is a JavaScript object, modify it as needed.  Use the standard
    // JavaScript array manipulation functions to modify data.preferences.
    ...
}