2016-02-26 36 views
1

假如我有以下Vertex類定義:檢索從TitanDB頂點的一個子集,通過MOGWAI

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') 

,並假定我有一大堆的頂點在我不同的食物DB。我將如何檢索具有某種味道的頂點?

我知道一種方法是隻是做:

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

但這似乎真的很低效的,因爲你會被查詢所有頂點,然後在蟒蛇過濾它們。我查看了文檔,mogwai的源代碼,並學會了如何進行簡單的Gremlin查詢,但我是一個初學者來繪製數據庫圖形,並且將點連接起來有點困難。

回答

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)