0

フレンド リスト (オブジェクト ID のリスト) と検索クエリがあります。検索クエリのように名前が始まる友達を検索したい。map/reduce を使用する必要があることはわかりますが、その方法については考えていません。

class UserAccount(Document):
    first_name = StringField(max_length = 20)
    last_name = StringField(max_length = 20)
    user_name = StringField(max_length = 20)
    email = EmailField()
    password = StringField(max_length = 20)
    friends = ListField(ReferenceField('self'))


# List Of Friends IDs
friends = [ObjectId("5278a1821d41c80d7a3ed4ec"), ObjectId("5278a1821d41c80d7a3ed4fe"), 
ObjectId("5278a1821d41c80d7a3ed4aa"), ObjectId("5278a1821d41c80d7a3ed4bb")]    

# Assume a search query. 
search_query = 'some-name'

regex = re.compile('^' + re.escape(search_query))
users = UserAccount._get_collection()
result = users.find( 
{ 
    "_id" : friends[0], 
    "first_name" : regex                    
})

ヘルプや参考文献をいただければ幸いです。

4

1 に答える 1

1

map reduce の必要はありません - これは一致するすべての友達を見つけるはずです:

UserAccount.objects.filter(pk__in=friends, name=regex)
于 2013-11-05T11:09:16.450 に答える