我在CosmicMind/Graph数据库中搜索实体时遇到了一些问题。下面是代码,它很容易解释
//User 1
//data: 14 Febbraio 2017
//ora : 15:40
//name: Paolo
//User 2
//data: 14 Febbraio 2017
//ora : 12:40
//name: Ernesto
//User 3
//data: 13 Febbraio 2017
//ora : 16:40
//name: Paolo
/*Search Parameters*/
//dataSearch = 13 Febbraio 2017
//oraSearch = 16:40
//nameSearch = Paolo
var search = Search<Entity>(graph: graph).for(types: "Users").where(properties: (key: "data", value: dataSearch)).where(properties: (key:"ora", value: oraSearch)).where(properties: (key:"name", value: nameSearch))
//returns [User1, User3]我期待来自搜索User3,因为搜索参数与该实体一致,但是相反,搜索返回User1、User3,就像dataSearch和oraSearch参数被忽略一样,并且只使用最后一个搜索参数nameSearch进行搜索。我做错了什么?
发布于 2017-02-15 02:05:14
你有太多的where statements。他们正在用每一条连续的语句替换自己。
这一点:
.where(properties: (key: "data", value: dataSearch)).where(properties: (key:"ora", value: oraSearch)).where(properties: (key:"name", value: nameSearch)应该是:
.where(properties: (key: "data", value: dataSearch), (key:"ora", value: oraSearch), (key:"name", value: nameSearch))或者速记:
.where(properties: ("data", dataSearch), ("ora", oraSearch), ("name", nameSearch))就是这样:)
发布于 2017-02-16 22:51:04
编辑:我使用另一个用于检索记录的参数进行了“求解”,即字符串类型。它像searchingParameter一样工作得很好,而不是Date type.Then,我对数据进行了一些操作,以分离出正确的结果。
也许我的xcode控制台可以帮助您,但首先我向您展示我的代码:
let search = Search<Entity>(graph: DataManager.shared.graph).for(types: DataManager.shared.entityType).where(properties: (key: "data", value: (DataManager.shared.datasource[0][0]["data"] as! Date)))
print("The date i am searching for->",DataManager.shared.datasource[0][0]["data"]!)
for (index,res) in search.sync().enumerated(){
print("Result #\(index)->\(res["data"]!)")
}
print("Total results found->",search.sync().count)
print("But only 10 records meet the requirement, not 22")
The date i am searching for-> 2017-02-16 11:19:14 +0000
Result #0->2017-02-15 22:31:28 +0000
Result #1->2017-02-15 22:21:51 +0000
Result #2->2017-02-15 22:31:43 +0000
Result #3->2017-02-15 22:44:31 +0000
Result #4->2017-02-16 10:56:37 +0000
Result #5->2017-02-16 10:56:48 +0000
Result #6->2017-02-16 10:59:23 +0000
Result #7->2017-02-15 22:32:01 +0000
Result #8->2017-02-16 10:56:21 +0000
Result #9->2017-02-15 22:23:06 +0000
Result #10->2017-02-16 11:16:00 +0000
Result #11->2017-02-16 11:19:14 +0000
Result #12->2017-02-15 22:32:12 +0000
Result #13->2017-02-15 22:42:12 +0000
Result #14->2017-02-16 11:18:07 +0000
Result #15->2017-02-16 10:59:59 +0000
Result #16->2017-02-15 22:31:36 +0000
Result #17->2017-02-16 10:58:24 +0000
Result #18->2017-02-16 10:59:07 +0000
Result #19->2017-02-15 22:23:22 +0000
Result #20->2017-02-15 22:31:49 +0000
Result #21->2017-02-15 22:32:18 +0000
Total results found-> 22
But only 10 records meet the requirement, not 22https://stackoverflow.com/questions/42226924
复制相似问题