2016-09-18 1 views
0

Я работаю над MongoDB в python[pymongo]. Я хочу вставить в документ массив из нескольких полей. Например: В приведенной ниже структуре коллекции я хочу вставить массив из Places Visited во все документы. Я не знаю, что это называется в мире Mongo. Так что я могу вставить его. Как вставить массив в документ? Может кто-нибудь помочь?Pymongo: Как вставить массив из нескольких полей в документ?

collectionName 
    { 
      "_id" : "4564345343", 
      "name": "Bunty", 
      "Basic Intro": "A.B.C.D.", 
      "Places Visited": [ 
        "1" : "Palace of Dob", 
        "2" : "Palace of Victoria", 
        "3" : "Sahara Desert" 
      ] 
    } 
    { 
      "_id" : "45657865745", 
      "name": "Humty", 
      "Basic Intro": "B.C.D.", 
      "Places Visited": [ 
        "1" : "Palace of Pakistan", 
        "2" : "Palace of U.S.A." 
        "3" : "White House" 
      ] 
    } 
+0

Ваш документ недействителен. Каков тип элементов в «Посещаемых местах»? – styvane

ответ

1

Это должно дать вам идею, как сделать это

import pymongo 

client = pymongo.MongoClient('yourHost', 30000) # adjust to your needs 
db = client.so 
coll = db.yourcollection 

# show initial data 
for doc in coll.find(): 
    print(doc) 

# update data 
places_visited = [ 
    "Palace of Dob", 
    "Palace of Victoria", 
    "Sahara Desert" 
] 
coll.update({}, { "$set": { "Places Visited": places_visited } }, multi=True) 

# show updated data 
for doc in coll.find(): 
    print(doc) 

, которые для ваших выборочные данные должны дать результаты, аналогичные этим

daxaholic$ python3 main.py 
{'name': 'Bunty', 'Basic Intro': 'A.B.C.D.', '_id': '4564345343'} 
{'name': 'Humty', 'Basic Intro': 'B.C.D.', '_id': '45657865745'} 
{'name': 'Bunty', 'Places Visited': ['Palace of Dob', 'Palace of Victoria', 'Sahara Desert'], 'Basic Intro': 'A.B.C.D.', '_id': '4564345343'} 
{'name': 'Humty', 'Places Visited': ['Palace of Dob', 'Palace of Victoria', 'Sahara Desert'], 'Basic Intro': 'B.C.D.', '_id': '45657865745'} 

Для получения дополнительной информации см docs о update

+0

Можете ли вы уточнить эту строку? 'coll.update ({}, {" $ set ": {" Посещаемые места ": places_visited}}, multi = True)' ** 1. ** Пустые брекеты '{}' ** 2. ** '$ set '** 3. **' multi = true' и самый важный поток фигурных скобок. – Amar

+0

Первым является часть запроса, пустой dict означает просто совпадение со всеми документами - вы можете настроить это, конечно, к вашим потребностям, но вы не упомянули никаких запросов в своем вопросе, чтобы он был пуст. '$ set' - это оператор, используемый для установки поля в документе. Я обновил свой ответ, включив ссылку на официальную документацию mongoDB – DAXaholic

+0

@Amar Это работало для вас? – DAXaholic

 Смежные вопросы

  • Нет связанных вопросов^_^