我有一个名为LinkError: pre-link script failed for package defaults::mpi4py-2.0.0-py36_1
的集合,另一个有名为Products
的集合。
Category
文档的一个字段Products
,引用类别的ID。
我想从idCategory
获取所有文档,其中类别名称等于“ Soda”。
我该怎么做?
答案 0 :(得分:0)
您似乎会进行简单的查询(Firebase Docs Reference):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/root_fragment2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_fragment2"
android:paddingTop="150dp"
android:paddingBottom="10dp"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:splitMotionEvents="false"
android:clipToPadding="false"/>
</LinearLayout>
答案 1 :(得分:0)
我想从类别名称等于“ Soda”的产品中获取所有文档。
由于在单个文档中没有所有数据,因此需要两次查询数据库。一旦获得该类别的ID(在这种情况下为“苏打”),然后根据该ID获得相应的产品。这是因为Firestore不支持跨多个集合的查询。单个查询只能使用单个集合中的文档属性。
为什么要查询两次数据库,当您一次查询并获得所需文档时,这也是昂贵的。为此,您需要对数据库架构进行一些更改。由于单个产品可能属于多个类别,因此您的新架构应如下所示:
Firestore-root
|
--- products (collection)
|
--- productId (document)
|
--- productName: "Soda Water"
|
--- category: ["Soda", "Other Category"]
|
--- //Other properties
要获取Soda
类别以外的所有文档,请使用以下代码行:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference productsRef = rootRef.collection("products");
Query query = productsRef.whereArrayContains("category", "Soda");
编辑:您也可以保留引用而不是仅保留ID,为此,请从此 post 中查看我的答案。