Categories

See More
Popular Forum

MBA (4887) B.Tech (1769) Engineering (1486) Class 12 (1030) Study Abroad (1004) Computer Science and Engineering (988) Business Management Studies (865) BBA (846) Diploma (746) CAT (651) B.Com (648) B.Sc (643) JEE Mains (618) Mechanical Engineering (574) Exam (525) India (462) Career (452) All Time Q&A (439) Mass Communication (427) BCA (417) Science (384) Computers & IT (Non-Engg) (383) Medicine & Health Sciences (381) Hotel Management (373) Civil Engineering (353) MCA (349) Tuteehub Top Questions (348) Distance (340) Colleges in India (334)
See More

Update_one in pymongo with different fields type [duplicate]

General Tech Bugs & Fixes

Max. 2000 characters
Replies

usr_profile.png

User

( 6 months ago )

In mongoDB collection I have different field types. Is it possible update doc in this collection with update_one method?

doc = {"upd_time": datetime.datetime.now(), "categories": [1,2,3]}
mng_collection.update_one({"_id": id}, {"$set": doc}, upsert=True)

That code replace existing array in categories field, but I need to add values from doc["categories"] array if not existing in collection doc array.

usr_profile.png

User

( 6 months ago )

You need to use $push with $each to add elements to the existing array. $set will always replace existing value with new one.

You can try this:

doc = {"upd_time": datetime.datetime.now(), "categories": [1,2,3]}
mng_collection.update_one({"_id": id}, {
    "$set": { "doc.upd_time" : doc.upd_time},
    $push : {categories : {$each : doc.categories}}
}, upsert=True)

what's your interest


forum_ban8_5d8c5fd7cf6f7.gif