如何将一个键:值附加到MongoDB游标?

时间:2014-02-07 14:24:12

标签: mongodb python-2.7 pymongo

是否可以将key:value附加到MongoDB游标?

我试过了:

cursor = collection.find(query,projection)
cursor['my_message'] = "value here" # trying to add key:value here

但它似乎不起作用(500)。

在更多情况下,这有效:

dbname = 'my_db'
db = connection[dbname]
collection = db.my_collection
query = {'key_1': my_var}
projection = {'key_2':1}
cursor = collection.find(query,projection)
response.content_type = 'application/json'
return dumps(cursor)

这不是:

dbname = 'my_db'
db = connection[dbname]
collection = db.my_collection
query = {'key_1': my_var}
projection = {'key_2':1}
cursor = collection.find(query,projection)
cursor['my_message'] = "value here" # trying to add key:value here
response.content_type = 'application/json'
return dumps(cursor)

编辑:只是为了可视化成功返回​​的内容(没有附加值),它类似于:

[{ document_1 },{ document_2 },{ document_3 }]

我希望它看起来像:

["my_message":"value here",{ document_1 },{ document_2 },{ document_3 }]

编辑:我尝试了以下替代方案,并获得了500。

entries = []
cursor = collection.find(query,projection)
for entry in cursor:
    entries.append(entry)
entries['my_message'] = "value here"
response.content_type = 'application/json'
return dumps(entries)

1 个答案:

答案 0 :(得分:1)

真的,WiredPrarie一开始就为你回答了这个问题,每个人都在说同样的话。

我们知道你想做什么。您希望将序列化响应与要放入的某些信息一起发回,然后返回结果集。我还假设你想要使用这些结果和你的其他数据,可能会加载到一些JavaScript处理商店。

我从未见过任何不期望某种结构的东西:

{
   "result": "ok",
   "meta": [{ akey: "avalue"}, {bkey: "bvalue"}],

   "results:[              // this is your 'entries' value here
       { document_1 },
       { document_2 },
       { document_3 },
       ....

所以每个人都在说嵌入你的entries到另一个你要序列化并返回的结构中。通过尝试将其他密钥推入entries列表,您正在以错误的方式执行此操作。