Mongodb 重新排列填充的json导致猫鼬

Mongodb 重新排列填充的json导致猫鼬,mongodb,mongoose,Mongodb,Mongoose,对于Post.find().populate(“name”)的简单json响应将返回json结果,如下所示。注意:问题的焦点是将json中的“name”:“Alex”重新排列为最终结构,如图所示。忽略需要隐藏id和v的部分。谢谢 [ { "_id": "54cd6669d3e0fb1b302e54e6", "title": "Hello World", "postedBy": { "_id": "54cd6669d3

对于Post.find().populate(“name”)的简单json响应将返回json结果,如下所示。注意:问题的焦点是将json中的“name”:“Alex”重新排列为最终结构,如图所示。忽略需要隐藏id和v的部分。谢谢

[
    {
        "_id": "54cd6669d3e0fb1b302e54e6",
        "title": "Hello World",
        "postedBy": {
            "_id": "54cd6669d3e0fb1b302e54e4",
            "name": "Alex",
            "__v": 0
        },
        "__v": 0
    },
    ...
]
我如何重新排列和显示整个json,如下所示

 [
        {
            "_id": "54cd6669d3e0fb1b302e54e6",
            "title": "Hello World",
            "name": "Alex"
        },
        ...
 ]
您可以使用方法返回纯JSON对象(不是mongoose文档),然后可以使用lodash助手方法(如)对其进行操作,如以下示例所示:

Post.find()
    .populate("name")
    .lean().exec(function (err, result) {

        if(result){
            var posts = _.map(result, function(p) {
                p.name = p.postedBy.name;               
                p.postedBy = undefined;
                return p;
            });
            console.log(posts);
        }
    });
通过将
versionKey
选项设置为false,可以禁用架构定义中的
“\uv”
属性。例如:

var postSchema = new Schema({ ... attributes ... }, { versionKey: false });

关于重新排列JSON中属性的顺序的问题,JS没有定义对象属性的顺序。然而,你 例如,可以同时使用方法来更改顺序

var json = {    
    "name": "Alex",
    "title": "Hello World",
    "_id": "54cd6669d3e0fb1b302e54e6"
};
console.log(json);

//change order to _id, title, name
var changed = JSON.parse(JSON.stringify(json, ["_id","title","name"] , 4));
console.log(k);
查看下面的演示

var json={
“姓名”:“亚历克斯”,
“标题”:“你好,世界”,
_id:“54cd6669d3e0fb1b302e54e6”
};
//将订单更改为_id、标题、名称
var changed=JSON.parse(JSON.stringify(JSON,[“_id”,“title”,“name”],4));
pre.innerHTML=“原始:”+JSON.stringify(JSON,null,4)+“
有序:”+JSON.stringify(已更改,null,4)
hi的可能重复,如何在特定位置重新排列json属性order@stackdisplayJS不定义对象属性的顺序,但您可以构造一个变通方法,检查我的更新答案。