如何在同一个数据库的集合中克隆(复制)MongoDB对象?

BBJ*_*BJ3 13 database shell mongodb nosql

我需要通过dbshel​​l复制(克隆)集合中的对象.有这样的事情:

> db.users.distinct( 'nickname' )
[
        "user1",
        "user2",
        "user3",
        "user4"
]
>
Run Code Online (Sandbox Code Playgroud)

user1在users集合中选择一个复杂对象,如何复制该对象然后在userX中更改(重命名)user1字段?

lig*_*lig 15

> user = db.users.findOne({'nickname': 'user1'})
> user.nickname = 'userX'
> delete user['_id']
> db.users.insert(user)
Run Code Online (Sandbox Code Playgroud)

描述

您需要找到用户对象并将其放入变量中.您需要修改所需的属性,而不是需要将整个对象作为新对象插入.为此,您需要删除_id对象已有的属性.而不仅仅是insert用来创建新的.


Fer*_*nch 8

不要删除该_id属性; 由于某种原因,某些价值观会失去类型.例如,整数转换为双精度数.

使用此解决方案:

var user = db.users.findOne(...)
user._id = new ObjectId()
// set other properties
db.users.insert(user)
Run Code Online (Sandbox Code Playgroud)