我想做的是用同一个键查询Firebase中的两个值。我的数据库是这样的:
"Document" : [ {
"fileType" : "PDF",
"language" : "en",
"linkUrl" : "https://myfile.pdf",
"name" : "Installation Guide"
}, {
"fileType" : "DOCUMENT",
"language" : "fr",
"linkUrl" : "https://myfile.txt",
"name" : "text.txt"
}
我在我的Android项目中编写了一个查询来检索具有相同语言的所有文档,并且它有效。
val selectedLanguage = LocalStorageHelper.getInstance(this)?.getSelectedLanguage()
val docRef = rootRef.child("Document").orderByChild("language").equalTo("en")
但是现在我想做的是,寻找“en”和“fr”。
我在网上搜索过,但没有发现任何积极的方面。
正如@PeterHaddad在他的回答中提到的,不幸的是Firebase中没有和
操作员。如果你说你不能切换到Firestore,因为这是一个简单的操作,你需要知道我们有一个解决方案,可以帮助你实现同样的目标。因此,要解决这个问题,可以创建一个复合节点,该节点可以容纳语言属性设置为
en
或fr
的所有对象。您的数据库结构应该如下所示:
Firebase-root
|
--- EnFrDocuments
| |
| --- documentId
| | |
| | --- fileType: "PDF"
| | |
| | --- language: "en"
| | |
| | --- linkUrl: "https://myfile.pdf"
| | |
| | --- name : "Installation Guide"
| |
| --- documentId
| |
| --- fileType: "DOCUMENT"
| |
| --- language: "fr"
| |
| --- linkUrl: "https://myfile.txt"
| |
| --- name : "myfile.txt"
|
--- Documents
|
--- //use the same structure
我建议您也使用它来
记录
节点,而不是将这些对象存储到数组中。
这种做法被称为
非规范化
,是Firebase的常见做法。为了更好地理解,我建议大家看看这段视频,Firebase数据库的非规范化是正常的。
此外,在复制数据时,有一件事需要记住。与添加数据的方式相同,您也需要对其进行维护。换句话说,如果你想更新/删除一个项目,你需要在它存在的每个地方都这样做。
过滤客户端上的语言。
val docRef = rootRef.child("Document").orderByChild("language").on('value', function(snapshot) {
val filteredDocuments = snapshot.val().filter(function(document) {
return document.language === 'en' || document.language === 'fr';
});
});
您不能在firebase数据库中使用AND
子句,您只能查询一种语言,因此您只能执行以下操作:
orderByChild("language").equalTo("en")
问题内容: 如何合并这两个SQL语句? 两个表中都存在hits10,hits11和hits12。 问题答案: 使用UNION查询-只需在两个查询之间填入“ UNION”即可: 更新 将联合包装在另一个查询中:
我正在使用MongoDB,我最终得到了两个集合(无意中)。 第一次收集(样本)有1亿条记录(推文),结构如下: 第二个集合(用户)拥有来自tweet集合的3000万条独特用户记录,看起来是这样的 用户集合中的_id是来自推文集合的user.screen_name,目标是他们的状态(是否作弊用户),最后value.count是我们第一个集合(样本)集合中出现的用户数量(例如捕获的推文数量) 现在我想
我有两个查询,它们都是分开工作的,但是当我尝试统一下摆时,我只有问题。 查询1: 查询 2: 如何根据(内部一)统一它们?
问题内容: 结合这两个查询的正确语法是什么? 和 我试过了: 但我收到“ UNION和ORDER BY的用法不正确”。 编辑 此外,我希望结果在一行中返回。这样我就可以访问php中的值,例如 根据西蒙的建议,我不应该使用UNION,因为我想返回一行数据 问题答案: 您不能先进入,然后再进入。 编辑 但是你可以 将ORDER BY或LIMIT应用于单个SELECT,将子句放在包围SELECT的括号内
我有以下型号 我试图通过名称和组名称获得一个实例。 我可以用下面的代码来做 但是我想把它变成一个查询。对如何实现这一点有什么想法吗?
问题内容: 我有两个查询,如下所示: 我想一次执行两个查询。 但是,然后告诉我如何处理每个单独设置的表。实际上,在ASP.NET中,我们使用数据集来处理两个查询, 如何使用PHP / MYSQL做同样的事情? 问题答案: 更新: 显然可以通过将标志传递给。请参阅使用PHP在一条语句中执行多个SQL查询。尽管如此,任何当前的读者都应避免使用-class函数,而更喜欢PDO。 您无法使用PHP中的常规