I want to insert nested lists/documents in to mongodb using python/pymongo. I want to insert the following in to mongodb using python. can somebody help? customer = {
'first_name' : 'Arnold',
'last_name' : 'Pettibone',
'addresses': [
'home' : {
'street' : '1234 fake street',
'city' : 'Anytown',
'state' : 'OH',
'zip' : '12345'
},
'work' : {
'street' : '742 Evergreen Terrace',
'city' : 'Springfield',
'state' : 'OH',
'zip': '12345'
}
]
}
I had tried myself. the code is as below. from pymongo import MongoClient try: conn = MongoClient() print("Connected successfully!!!") except: print("Could not connect to MongoDB") databasedb = conn.database
Created or Switched to collection names: my_collectioncollection = db.my_collection
customer = {
'first_name' : 'Arnold',
'last_name' : 'Petti',
'addresses': [
'home' : {
'street' : '1234 fake street',
'city' : 'Anytown',
'state' : 'OH',
'zip' : '12345'
},
'work' : {
'street' : '742 Evergreen Terrace',
'city' : 'Springfield',
'state' : 'OH',
'zip': '12345'
}
]
}
Insert Datarec_id1 = collection.insert(customer)
print("Data inserted with record ids",rec_id1) Printing the data insertedcursor = collection.find()
for record in cursor:
print(record)
but it shows following error: File "emo.py", line 20
'home' : {
^
syntax error : invalid syntax'
A document in MongoDB is the same as a record in SQL databases. Insert Into CollectionTo insert a record, or document as it is called in MongoDB, into a collection, we use the insert_one() method. The first parameter of the insert_one() method is a dictionary containing the name(s) and value(s) of each field in the document you want to insert. ExampleInsert a record in the "customers"
collection: import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["mydatabase"] mycol = mydb["customers"] mydict = { "name": "John", "address": "Highway 37" } x = mycol.insert_one(mydict) Run example »
Return the _id FieldThe insert_one() method returns a InsertOneResult object,
which has a property, inserted_id , that holds the id of the inserted document. ExampleInsert another record in the "customers" collection, and return the value of the _id field: mydict = { "name": "Peter", "address": "Lowstreet 27" } x = mycol.insert_one(mydict) print(x.inserted_id) Run example » If you do not specify
an _id field, then MongoDB will add one for you and assign a unique id for each document. In the example above no _id field was specified, so MongoDB assigned a unique _id for the record (document).
Insert Multiple DocumentsTo insert multiple documents into a collection in MongoDB, we use the insert_many() method. The first parameter of the insert_many() method is a list containing dictionaries with the data you want to insert: Example
import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["mydatabase"] mycol = mydb["customers"] mylist = [ { "name": "Amy", "address": "Apple st 652"}, { "name": "Hannah", "address": "Mountain 21"}, { "name": "Michael", "address": "Valley 345"}, { "name": "Sandy", "address": "Ocean blvd 2"}, { "name": "Betty", "address": "Green Grass 1"}, { "name": "Richard", "address": "Sky st
331"}, { "name": "Susan", "address": "One way 98"}, { "name": "Vicky", "address": "Yellow Garden 2"}, { "name": "Ben", "address": "Park Lane 38"}, { "name": "William", "address": "Central st 954"}, { "name": "Chuck", "address": "Main Road 989"}, { "name": "Viola", "address": "Sideway 1633"} ] x = mycol.insert_many(mylist) #print list of the _id values of the inserted documents: print(x.inserted_ids) Run example » The insert_many() method returns a InsertManyResult object, which has a property, inserted_ids , that holds the ids of the inserted documents.
Insert Multiple Documents, with Specified IDsIf you do not want MongoDB to assign unique ids for you document, you can specify the _id field when you insert the document(s). Remember that the values has to
be unique. Two documents cannot have the same _id. Example import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["mydatabase"] mycol = mydb["customers"] mylist = [ { "_id": 1, "name": "John", "address": "Highway 37"}, { "_id": 2, "name": "Peter", "address": "Lowstreet 27"}, { "_id": 3, "name": "Amy", "address": "Apple st 652"}, { "_id": 4, "name": "Hannah", "address":
"Mountain 21"}, { "_id": 5, "name": "Michael", "address": "Valley 345"}, { "_id": 6, "name": "Sandy", "address": "Ocean blvd 2"}, { "_id": 7, "name": "Betty", "address": "Green Grass 1"}, { "_id": 8, "name": "Richard", "address": "Sky st 331"}, { "_id": 9, "name": "Susan", "address": "One way 98"}, { "_id": 10, "name": "Vicky", "address": "Yellow Garden 2"}, { "_id": 11, "name": "Ben", "address": "Park Lane 38"}, {
"_id": 12, "name": "William", "address": "Central st 954"}, { "_id": 13, "name": "Chuck", "address": "Main Road 989"}, { "_id": 14, "name": "Viola", "address": "Sideway 1633"} ] x = mycol.insert_many(mylist) #print list of the _id values of the inserted documents: print(x.inserted_ids) Run example » |