首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何正确使用NDB查询和/或

如何正确使用NDB查询和/或
EN

Stack Overflow用户
提问于 2013-03-26 13:57:05
回答 2查看 3.1K关注 0票数 2

我不确定是否正确地用ANDOR构建查询。当我查询到只匹配标签时,我会得到一些匹配的视频。但是,当我尝试第二个查询时(以确保视频与其本身无关),查询将返回所有视频。

Update:我希望返回至少有一个与video相同的标签的视频,但是返回的列表中不包含video。基本上是一个related_videos特性。

代码语言:javascript
运行
复制
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()

看看文献资料在这个问题上,但不确定运营商是如何工作的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-26 14:46:49

AND至少有两个参数。你应该这样做:

代码语言:javascript
运行
复制
Video.query(ndb.AND(Video.tags == tag, Video.key != video.key))

从您发布的链接中,您可以看到更多关于如何将其与ndb.OR结合的示例。

票数 9
EN

Stack Overflow用户

发布于 2013-03-26 14:41:26

这样做是有效的:

代码语言:javascript
运行
复制
for tag in tags:
  Video.query(Video.tags == tag, Video.key != video.key)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15638912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档