我有一个嵌套的json,我想找到一个值等于给定数字的记录。我在python中使用pymongo,但是遇到了一些错误:
from pymongo import MongoClient
import datetime
import json
import pprint
def connectDatabase(service):
try:
if service=="mongodb":
host = 'mongodb://connecion_string.mlab.com:31989'
database = 'xxx'
user = 'xxx'
password = 'xxx'
client = MongoClient(host)
client.xxx.authenticate(user, password, mechanism='SCRAM-SHA-1')
db = client.xxx
new_posts = [{"author": "Mike", "text": "Another post!",
"tags": [
{
"CSPAccountNo": "414693"
},
{
"CSPAccountNo": "349903"
}]
}]
result=db.posts1.insert_many(new_posts)
print (xxx.posts1.find( {"CSPAccountNo": { $eq: "414693" } } )
except Exception as e:
print(e)
pass
print (connectDatabase("mongodb"))
错误:
File "mongo.py", line 35
print (cstore.posts1.find( {"CSPAccountNo": { $eq: "414693" } } )
^
SyntaxError: invalid syntax
我对Mongodb很新。任何帮助将不胜感激
答案 0 :(得分:2)
在Python中你必须使用Python语法,而不是像Mongo shell中的JS语法。这意味着字典键需要引号:
print(cstore.posts1.find( {"CSPAccountNo": { "$eq": "414693" } } )
(注意,在您的代码中,您实际上从未将new_posts
插入到集合中,因此您的查找调用可能实际上找不到任何内容。)
答案 1 :(得分:0)
应该是
print (xxx.posts1.find( {"tags.CSPAccountNo": { $eq: "414693" } } )