$ eq无效语法Mongo DB

时间:2018-04-04 19:11:33

标签: python mongodb pymongo

我有一个嵌套的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很新。任何帮助将不胜感激

2 个答案:

答案 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" } } )