Question Comment cloner (dupliquer) un objet MongoDB dans une collection de la même base de données?


Je dois dupliquer (cloner) un objet dans la collection via dbshell. Avoir quelque chose comme ça:

> db.users.distinct( 'nickname' )
[
        "user1",
        "user2",
        "user3",
        "user4"
]
>

où user1 sélectionne un objet complexe dans utilisateurs collection, comment puis-je dupliquer l'objet puis changer (renommer) le champ user1 dans userX?


12
2018-03-24 10:33


origine


Réponses:


Code 

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

La description

Vous devez rechercher un objet utilisateur et le placer dans la variable. Vous devez alors modifier la propriété souhaitée et vous devez insérer l'objet entier en tant que nouvel objet. Pour y parvenir, vous devez supprimer _id propriété que l'objet a déjà. Et que simplement utiliser insert pour créer le nouveau.


15
2018-03-24 13:43



Ne pas supprimer le _id propriété; pour une raison quelconque, certaines valeurs perdent leur type. Par exemple, les entiers sont convertis en doubles.

Utilisation cette solution:

var user = db.users.findOne(...)
user._id = new ObjectId()
// set other properties
db.users.insert(user)

6
2018-05-19 19:30



Le champ _id est un champ obligatoire et nous ne pouvons pas le supprimer comme ça. Ce que je fais, c'est appeler toJSON () vers l'objet renvoyé, puis supprimer le _id.

var rObject = dbObject.toJSON();
delete rObject._id;
db.insert(rObject);

2
2017-07-04 18:43