Python 通过Mogwai从TitanDB检索顶点子集

Python 通过Mogwai从TitanDB检索顶点子集,python,titan,Python,Titan,假设我有以下顶点类定义: from mogwai.connection import setup from mogwai.models import Vertex, Edge from mogwai import properties setup('localhost') class Food(Vertex): name = properties.String(default='banana') taste = properties.String(default='sweet

假设我有以下
顶点
类定义:

from mogwai.connection import setup
from mogwai.models import Vertex, Edge
from mogwai import properties

setup('localhost')

class Food(Vertex):
    name = properties.String(default='banana')
    taste = properties.String(default='sweet')
假设我的数据库中有一堆不同食物的顶点。如何仅检索具有特定品味的顶点

我知道一种方法就是:

ingredients = [food for food in Food.all() if food.taste=='sweet']

但这看起来效率很低,因为您将查询所有顶点,然后在python中过滤它们。我看过文档、mogwai源代码,并学习了如何进行简单的Gremlin查询,但我是一个图表DBs的初学者,要把这些点连接起来有点困难。

我不知道为什么我没有想到如何定义
all()
,但我学会了如何从该函数加载查询结果。以下是有效的方法:

from mogwai.connection import execute_query

flavor_type = 'sweet'
rs = execute_query("g.V.has('food_taste','{}').toList()".format(flavor_type))
objects = []
for r in rs:
    objects += Food.deserialize(r)
print(objects)

不知道为什么我没有想到如何定义
all()
,但我学会了如何从该函数加载查询结果。以下是有效的方法:

from mogwai.connection import execute_query

flavor_type = 'sweet'
rs = execute_query("g.V.has('food_taste','{}').toList()".format(flavor_type))
objects = []
for r in rs:
    objects += Food.deserialize(r)
print(objects)