假设我的每个用户都可以保存许多“智能搜索”:
user = {
'username':'johncit',
'smart_searches': [
{'name':'last 24 hrs','terms':{'modifiedby':datetime(2012,1,1),'title':'foobar'}},
{'name':'blabla','terms':{'title':'whatever','otherfield':500}}
]
}
现在说约翰点击了他的“blabla”搜索。我如何获得条款?我可以像这样得到约翰的所有智能搜索:
db.Users.find_one({
'username':'johncit','smart_searches':{'$elemMatch':{'Name':'blabla'}}})
但这会返回整个文档,而不仅仅是我真正需要的“blabla”搜索的术语。然后我必须弄清楚客户端的确切条款吗?或者这是将“smart_searches”放在他们自己的收藏中的情况吗?有更好的结构吗?
我很想听听你的想法。