假设我有以下Vertex
类定义:
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查询,但我是初学者来绘制数据库,并且连接点有点困难。
答案 0 :(得分:0)
不确定为什么我没有看到如何定义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)