将新密钥添加到Mongodb上的集合(已订购)
我需要在MongoDB上的集合中添加一个新密钥,但希望在其他密钥之前添加它,例如:将新密钥添加到Mongodb上的集合(已订购),mongodb,nosql,Mongodb,Nosql,我需要在MongoDB上的集合中添加一个新密钥,但希望在其他密钥之前添加它,例如: { "_id" : ObjectId("5dd41934e82a4e79362f2a4a"), "name" : "Mercado Livre", "attached" : false, "consultant" : { "id" : null, "name" : null }, "new_field" : "New Value",
{
"_id" : ObjectId("5dd41934e82a4e79362f2a4a"),
"name" : "Mercado Livre",
"attached" : false,
"consultant" : {
"id" : null,
"name" : null
},
"new_field" : "New Value",
"createdAt" : "2019-11-19 14:32:52",
"updatedAt" : null,
"deletedAt" : null,
"__v" : 0
}
我的文件:
{
"_id" : ObjectId("5dd41934e82a4e79362f2a4a"),
"name" : "Mercado Livre",
"attached" : false,
"consultant" : {
"id" : null,
"name" : null
},
"createdAt" : "2019-11-19 14:32:52",
"updatedAt" : null,
"deletedAt" : null,
"__v" : 0
}
我需要在顾问更新所有文档后添加一个新字段,例如:
{
"_id" : ObjectId("5dd41934e82a4e79362f2a4a"),
"name" : "Mercado Livre",
"attached" : false,
"consultant" : {
"id" : null,
"name" : null
},
"new_field" : "New Value",
"createdAt" : "2019-11-19 14:32:52",
"updatedAt" : null,
"deletedAt" : null,
"__v" : 0
}
在Mysql中,我使用
ALTER TABLE document
ADD [COLUMN] new_field VARCHAR(50) AFTER consultant;
MongoDB使用JSON,JSON对象属性是无序的。没有可能的方法来保证属性的顺序,这真的不重要。你在做什么,要求他们按照特定的顺序?即使您确实按您想要的顺序存储了它们,也无法保证它们会按该顺序返回给您
因此,您的问题的答案很简单,您不能。我怀疑是否可以在mongoDB的文档中实现这一点,基本上DB是非规范化的-不保证字段存在或存在于特定位置,因为每个文档都像一个JSON,我认为,除非你用所有需要的字段重新编写文档,否则你可能无法做到!!上次我是这样做的,我需要订购,但我不确定这是否是不可能的,谢谢你的帮助@crispytoes!!MongoDB所做的唯一一件事就是它总是将_id字段放在第一位。