首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CosmicMind/Graph -带有3个参数的搜索查询未返回预期的实体

CosmicMind/Graph -带有3个参数的搜索查询未返回预期的实体
EN

Stack Overflow用户
提问于 2017-02-14 21:02:47
回答 2查看 185关注 0票数 0

我在CosmicMind/Graph数据库中搜索实体时遇到了一些问题。下面是代码,它很容易解释

代码语言:javascript
复制
//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进行搜索。我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2017-02-15 02:05:14

你有太多的where statements。他们正在用每一条连续的语句替换自己。

这一点:

代码语言:javascript
复制
.where(properties: (key: "data", value: dataSearch)).where(properties: (key:"ora", value: oraSearch)).where(properties: (key:"name", value: nameSearch)

应该是:

代码语言:javascript
复制
.where(properties: (key: "data", value: dataSearch), (key:"ora", value: oraSearch), (key:"name", value: nameSearch))

或者速记:

代码语言:javascript
复制
.where(properties: ("data", dataSearch), ("ora", oraSearch), ("name", nameSearch))

就是这样:)

票数 0
EN

Stack Overflow用户

发布于 2017-02-16 22:51:04

编辑:我使用另一个用于检索记录的参数进行了“求解”,即字符串类型。它像searchingParameter一样工作得很好,而不是Date type.Then,我对数据进行了一些操作,以分离出正确的结果。

也许我的xcode控制台可以帮助您,但首先我向您展示我的代码:

代码语言:javascript
复制
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 22
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42226924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档