gpt4 book ai didi

python - pymongo 和 $ne : null 的语法错误

转载 作者:可可西里 更新时间:2023-11-01 09:12:27 27 4
gpt4 key购买 nike

这是我的代码:

#! /usr/bin/python

import os
from pymongo.connection import Connection
from pymongo.master_slave_connection import MasterSlaveConnection


database = 'toto'
collection = 'logs'

master = Connection(host="X.X.X.X", port=27017)
slave1 = Connection(host="X.X.X.X", port=27017)
con = MasterSlaveConnection(master, slaves=[slave1, master])

db = getattr(con,database)

#host_name.append("getattr(db,collection).distinct( 'host_name' )")
#print host_name[1]

hosts = db.logs.distinct( 'host_name' )

services = db.logs.distinct("service_description" , { "service_description" : { $ne : null } } )

#print hosts
print services

我得到了这个错误:

File "./rapport.py", line 23
services = db.logs.distinct("service_description" , { "service_description" : { $ne : null } } )
^
SyntaxError: invalid syntax

为什么我不能在我的代码中使用 "$ne : null"?我不明白,因为当我直接在 mongodb 中执行此查询 "db.logs.distinct("service_description", { "service_description": { $ne : null } } )" 时它有效。

我也试过了,但是没用:

services = db.logs.distinct("service_description", { "service_description" : { "$ne" : None } } )

感谢您的帮助。

最佳答案

您需要引用 $ne 并使用 None 而不是 null。Pymongo 使用字典作为参数。

asdf = "something"
{ asdf: "foo"}

是一个有效的声明,使用 "something" 作为键。

如果你比较一下

{$ne: "foo"}

解释器需要一个变量名作为第一个条目,而 $ne 是无效的。

另外,null在 Python 中没有预定义,所以使用 None 代替。

结合pymongo中流畅的界面,你的查询应该是:

db.logs.find({"service_description": {"$ne" : None}}).distinct('service_description')

关于python - pymongo 和 $ne : null 的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20611475/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com