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")
database
db = conn.databaseCreated or Switched to collection names: my_collection
collection = 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 Data
rec_id1 = collection.insert(customer)print("Data inserted with record ids",rec_id1)
Printing the data inserted
cursor = 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 Collection
To 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.
Example
Insert 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 Field
The insert_one() method returns a InsertOneResult object, which has a property, inserted_id, that holds the id of the inserted document.
Example
Insert 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 Documents
To 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 IDs
If 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 »