Firestore에 INQuery가 지원되었으므로 SDK, Ballcap에서 시도해보십시오.
이 기사에 대하여
Firestore에서 마침내 IN 절이 지원되었습니다
Firestore에서는 던질 수 없는 Query를 Algolia에 맡기는 경우는 있을 것 같습니다만,
이번 갱신에 의해 OR 검색에 대해서는 Algolia에 의지하지 않아도 Firestore로 완결해 할 수 있을 것 같네요! (제한 내용에 따라 )
그래서 이번에는 SDK, Firestore의 래퍼 라이브러리 인 Ballcap 각각에서 시도한 내용과 IN 절의 제한에 대해 써 보았습니다
전제
Firestore에서 MoviesCollection을 준비하고,
여러 Document가 MoviesCollection에 들어있는 상태를 만들고 있습니다.
전체적인 Path 이미지는 이쪽/movies/{movieId}
각 Document의 데이터 내용
Ballcap 사용의 경우에 대해서도 이번 기사에서 접하기 위해 Model에 대해서
import Ballcap
struct Movies: Codable, Equatable, Modelable {
var name: String = ""
var category: [String] = []
var tag: String = ""
}
IN Query
tagField에 new 또는 recommend가 존재하는 Document를 취득
SDK
db.collection("movies")
.whereField("tag", in: ["new", "recommend"])
.addSnapshotListener { (querySnapshot, error) in
if let error = error {
print(error)
}
if let documents = querySnapshot?.documents {
for doc in documents {
print("data:\(doc.data())")
}
}
}
Ballcap
Document<Movies>
.where("tag", in: ["new", "recommend"])
.dataSource().onCompleted { (_, movies) in
for movie in movies {
print("movie:\(movie.data?.name)")
}
}.get()
ArrayContainAny Query
categoryField에 horror 또는 thriller가 존재하는 Document를 취득
SDK
db.collection("movies")
.whereField("category", arrayContainsAny: ["horror", "thriller"])
.addSnapshotListener { (querySnapshot, error) in
if let error = error {
print(error)
}
if let documents = querySnapshot?.documents {
for doc in documents {
print("doc:\(doc.data())")
}
}
}
Ballcap
Document<Movies>
.where("category", arrayContainsAny: ["horror", "thriller"])
.dataSource().onCompleted { (_, movies) in
for movie in movies {
print("movie:\(movie.data?.name)")
}
}.get()
제한 정보
IN Query에 대한 제한은 다음 두 가지입니다.現在、クエリでは最大10個の異なる値に制限されています。
// 10件まで!
whereField("number", in: ["1","2","3","4","5","6","7","8","9","10"])
単一のクエリでは、これらのタイプの操作のうち1つのみを使用できます
// 新しくFiledを設けてうまく使えば制限超えれるのでは?もダメ
whereField("number", in: ["1","2","3","4","5","6","7","8","9","10"])
whereField("number2", in: ["11","12","13","14","15","16","17","18","19","20"])
그건 그렇고, 10 건이 넘으면 충돌
reason: 'Invalid Query. 'arrayContainsAny' filters support a maximum of 10 elements in the value array.'
reason: 'Invalid Query. 'in' filters support a maximum of 10 elements in the value array.'
참고
Cloud Firestore에서 IN 쿼리를 지원합니다!
Querying and filtering data
Firestore
↑여기의 갱신 치라 호라미테루와 릴리스 발표전에 눈치채거나 합니다
사용한 라이브러리
Ballcap-iOS
여담
신세를 지고 있는 라이브러리에 이번 IN구 대응이 merge되었습니다
아직 내용을 쫓을 수는 없지만 Query 근처는 최근에보고 있었기 때문에 타이밍이 좋았습니다!
Reference
이 문제에 관하여(Firestore에 INQuery가 지원되었으므로 SDK, Ballcap에서 시도해보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/giiiita/items/1e2381fbe708514cf5d0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Firestore에서 MoviesCollection을 준비하고,
여러 Document가 MoviesCollection에 들어있는 상태를 만들고 있습니다.
전체적인 Path 이미지는 이쪽
/movies/{movieId}
각 Document의 데이터 내용
Ballcap 사용의 경우에 대해서도 이번 기사에서 접하기 위해 Model에 대해서
import Ballcap
struct Movies: Codable, Equatable, Modelable {
var name: String = ""
var category: [String] = []
var tag: String = ""
}
IN Query
tagField에 new 또는 recommend가 존재하는 Document를 취득
SDK
db.collection("movies")
.whereField("tag", in: ["new", "recommend"])
.addSnapshotListener { (querySnapshot, error) in
if let error = error {
print(error)
}
if let documents = querySnapshot?.documents {
for doc in documents {
print("data:\(doc.data())")
}
}
}
Ballcap
Document<Movies>
.where("tag", in: ["new", "recommend"])
.dataSource().onCompleted { (_, movies) in
for movie in movies {
print("movie:\(movie.data?.name)")
}
}.get()
ArrayContainAny Query
categoryField에 horror 또는 thriller가 존재하는 Document를 취득
SDK
db.collection("movies")
.whereField("category", arrayContainsAny: ["horror", "thriller"])
.addSnapshotListener { (querySnapshot, error) in
if let error = error {
print(error)
}
if let documents = querySnapshot?.documents {
for doc in documents {
print("doc:\(doc.data())")
}
}
}
Ballcap
Document<Movies>
.where("category", arrayContainsAny: ["horror", "thriller"])
.dataSource().onCompleted { (_, movies) in
for movie in movies {
print("movie:\(movie.data?.name)")
}
}.get()
제한 정보
IN Query에 대한 제한은 다음 두 가지입니다.現在、クエリでは最大10個の異なる値に制限されています。
// 10件まで!
whereField("number", in: ["1","2","3","4","5","6","7","8","9","10"])
単一のクエリでは、これらのタイプの操作のうち1つのみを使用できます
// 新しくFiledを設けてうまく使えば制限超えれるのでは?もダメ
whereField("number", in: ["1","2","3","4","5","6","7","8","9","10"])
whereField("number2", in: ["11","12","13","14","15","16","17","18","19","20"])
그건 그렇고, 10 건이 넘으면 충돌
reason: 'Invalid Query. 'arrayContainsAny' filters support a maximum of 10 elements in the value array.'
reason: 'Invalid Query. 'in' filters support a maximum of 10 elements in the value array.'
참고
Cloud Firestore에서 IN 쿼리를 지원합니다!
Querying and filtering data
Firestore
↑여기의 갱신 치라 호라미테루와 릴리스 발표전에 눈치채거나 합니다
사용한 라이브러리
Ballcap-iOS
여담
신세를 지고 있는 라이브러리에 이번 IN구 대응이 merge되었습니다
아직 내용을 쫓을 수는 없지만 Query 근처는 최근에보고 있었기 때문에 타이밍이 좋았습니다!
Reference
이 문제에 관하여(Firestore에 INQuery가 지원되었으므로 SDK, Ballcap에서 시도해보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/giiiita/items/1e2381fbe708514cf5d0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
db.collection("movies")
.whereField("tag", in: ["new", "recommend"])
.addSnapshotListener { (querySnapshot, error) in
if let error = error {
print(error)
}
if let documents = querySnapshot?.documents {
for doc in documents {
print("data:\(doc.data())")
}
}
}
Document<Movies>
.where("tag", in: ["new", "recommend"])
.dataSource().onCompleted { (_, movies) in
for movie in movies {
print("movie:\(movie.data?.name)")
}
}.get()
categoryField에 horror 또는 thriller가 존재하는 Document를 취득
SDK
db.collection("movies")
.whereField("category", arrayContainsAny: ["horror", "thriller"])
.addSnapshotListener { (querySnapshot, error) in
if let error = error {
print(error)
}
if let documents = querySnapshot?.documents {
for doc in documents {
print("doc:\(doc.data())")
}
}
}
Ballcap
Document<Movies>
.where("category", arrayContainsAny: ["horror", "thriller"])
.dataSource().onCompleted { (_, movies) in
for movie in movies {
print("movie:\(movie.data?.name)")
}
}.get()
제한 정보
IN Query에 대한 제한은 다음 두 가지입니다.現在、クエリでは最大10個の異なる値に制限されています。
// 10件まで!
whereField("number", in: ["1","2","3","4","5","6","7","8","9","10"])
単一のクエリでは、これらのタイプの操作のうち1つのみを使用できます
// 新しくFiledを設けてうまく使えば制限超えれるのでは?もダメ
whereField("number", in: ["1","2","3","4","5","6","7","8","9","10"])
whereField("number2", in: ["11","12","13","14","15","16","17","18","19","20"])
그건 그렇고, 10 건이 넘으면 충돌
reason: 'Invalid Query. 'arrayContainsAny' filters support a maximum of 10 elements in the value array.'
reason: 'Invalid Query. 'in' filters support a maximum of 10 elements in the value array.'
참고
Cloud Firestore에서 IN 쿼리를 지원합니다!
Querying and filtering data
Firestore
↑여기의 갱신 치라 호라미테루와 릴리스 발표전에 눈치채거나 합니다
사용한 라이브러리
Ballcap-iOS
여담
신세를 지고 있는 라이브러리에 이번 IN구 대응이 merge되었습니다
아직 내용을 쫓을 수는 없지만 Query 근처는 최근에보고 있었기 때문에 타이밍이 좋았습니다!
Reference
이 문제에 관하여(Firestore에 INQuery가 지원되었으므로 SDK, Ballcap에서 시도해보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/giiiita/items/1e2381fbe708514cf5d0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// 10件まで!
whereField("number", in: ["1","2","3","4","5","6","7","8","9","10"])
// 新しくFiledを設けてうまく使えば制限超えれるのでは?もダメ
whereField("number", in: ["1","2","3","4","5","6","7","8","9","10"])
whereField("number2", in: ["11","12","13","14","15","16","17","18","19","20"])
reason: 'Invalid Query. 'arrayContainsAny' filters support a maximum of 10 elements in the value array.'
reason: 'Invalid Query. 'in' filters support a maximum of 10 elements in the value array.'
Cloud Firestore에서 IN 쿼리를 지원합니다!
Querying and filtering data
Firestore
↑여기의 갱신 치라 호라미테루와 릴리스 발표전에 눈치채거나 합니다
사용한 라이브러리
Ballcap-iOS
여담
신세를 지고 있는 라이브러리에 이번 IN구 대응이 merge되었습니다
아직 내용을 쫓을 수는 없지만 Query 근처는 최근에보고 있었기 때문에 타이밍이 좋았습니다!
Reference
이 문제에 관하여(Firestore에 INQuery가 지원되었으므로 SDK, Ballcap에서 시도해보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/giiiita/items/1e2381fbe708514cf5d0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
신세를 지고 있는 라이브러리에 이번 IN구 대응이 merge되었습니다
아직 내용을 쫓을 수는 없지만 Query 근처는 최근에보고 있었기 때문에 타이밍이 좋았습니다!
Reference
이 문제에 관하여(Firestore에 INQuery가 지원되었으므로 SDK, Ballcap에서 시도해보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/giiiita/items/1e2381fbe708514cf5d0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)