pymongoを使用して、とはSmallUrl
異なるコレクション内のドキュメントを取得しようとしていますnull
。names
キーとキーを取得しようとしていSmallUrl
ます。
唯一のものを探すとName
、クエリは正常に実行されます。null
ただし、の値を持つドキュメントを結果から除外したいのでSmallUrl
、これをクエリに含めると、クエリは何も返しません。
これはMongoDBの構造です。
{u'Images': {u'LargeUrl': u'http://somelink.com/images/7960/53.jpg',
u'SmallUrl': u'http://somelink.com/images/7960/41.jpg'}
u'Name': u'Some Name',
u'_id': ObjectId('512b90f157dd5920ee87049e')}
{u'Images': {u'LargeUrl': u'http://somelink.com/images/8001/53.jpg',
u'SmallUrl': null}
u'Name': u'Some Name Variation',
u'_id': ObjectId('512b90f157dd5820ee87781e')}
これはクエリの関数です。
def search_title(search_title):
$ne
''' Returns a tuple with cursor (results) and the size of the cursor'''
query = {'Name': {'$regex': search_title, '$options': 'i'}, 'SmallUrl': {'$exists': True}}
projection = {'Name': 1, 'Images': 1}
try:
results = movies.find(query, projection)
except:
print "Unexpected error: ", sys.exc_info()[0]
$ne
return results, results.count()
私はMongoDBを初めて使用し、すでにさまざまなクエリを試しました。$and
、、}を使用$not
しました。{'$ne': 'null'}
mongoShellでもクエリを実行しましたが、同じ結果になりました。これは、私がシェルで照会したものの例です。
db.myCollection.find({'Name': {'$regex': 'luis', '$options': 'i'}, 'SmallUrl': {'$ne': null}})
何が間違っているのか知りたいのですが。