如何处理noSQL数据库中的标记

Joh*_*ews 2 database database-design nosql firebase firebase-realtime-database

我有一个带有产品的noSQL数据库.这些产品显然具有一些特性,我可以根据其属性过滤产品.

这如何与标签一起使用?更具体地说,我应该如何构建节点,以便我可以过滤掉具有特定标签的项目?

火力地堡

如果您熟悉Firebase .equalTo(),请跟进:如何构建我的FB数据库以及如何查询带有特定标记的项目?

我想到的一件事是为节点提供单独的属性,例如:

   $productId
       /tag_1
       /tag_2
Run Code Online (Sandbox Code Playgroud)

但后来我必须多次过滤或查询.如何克服或有其他方法?

Dav*_*ast 7

你把它放在了tags下面products.尝试翻转它.

$tagId
   /$productId
Run Code Online (Sandbox Code Playgroud)

现在,您可以通过标签查找产品而无需查询.

// https://<my-firebase-app>.firebaseio.com/tags/{tag}/{productId}
var ref = new Firebase('url').child('tags').child($tagId).child($productId);
Run Code Online (Sandbox Code Playgroud)

JSON看起来像这样:

{
   "tags":{
      "kinda_cool":{
         "product_3":true,
         "product_6":true
      },
      "super_cool":{
         "product_1":true,
         "product_2":true,
         "product_4":true,
         "product_5":true
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

而不是真实,你可以存储任何其他相关信息.但是,使用$productId密钥,您可以轻松地通过它的标签检索产品.