【发布时间】:2013-03-26 13:57:05
【问题描述】:
我不确定我是否正确地使用AND 和OR 构建查询。当我查询匹配标签时,我得到了一些匹配的视频。但是当我尝试第二个查询时(以确保视频与自身无关),查询返回所有视频。
更新:我希望返回至少有一个与相关video 相同标签的视频,但返回的列表不包括video。基本上是一个related_videos 功能。
from solveforx.lib.moonshots import Video
from google.appengine.ext import ndb
video = Video.query().get()
tags = video.tags or []
for tag in tags:
print Video.query(Video.tags == tag).count() # returns 1
print "-------"
print Video.query(Video.tags == tag and Video.key != video.key) # returns total videos - 1
print "========"
# also tried this
# print Video.query(Video.tags == tag, ndb.AND(Video.key != moonshot.key)).count() # returns 0
# print Video.query(ndb.AND(ndb.AND(Video.tags == tag), ndb.AND(Video.key != video.key) )).count()
查看the documentation,但不确定操作员的工作方式。
【问题讨论】:
-
Mehul,我有点不清楚,您对第二个条件查询的期望结果是什么?您的 cmets 显示两个查询都返回 1。哪一个是错误的?
-
对不起,我用我真正打算做的事情更新了这个问题。还要回答我自己的问题!
标签: google-app-engine app-engine-ndb