如何处理 noSQL 数据库中的标签
How to handle tags in a noSQL database
我有一个包含产品的 noSQL 数据库。这些产品显然有一些特点,我可以根据它们的特性筛选出产品。
这如何与标签一起使用?更具体地说,我应该如何构建节点以便过滤掉带有特定标签的项目?
Firebase
如果您熟悉 Firebase .equalTo(),请跟进:我将如何构建我的 FB 数据库以及如何查询具有特定标签的项目?
我想到的一件事是为节点设置单独的属性,例如:
$productId
/tag_1
/tag_2
但是我必须多次过滤或查询。如何克服这个问题或者有其他方法吗?
您将 tags
放在 products
下方。试试翻转它。
$tagId
/$productId
现在您可以通过标签找到产品,而无需查询。
// https://<my-firebase-app>.firebaseio.com/tags/{tag}/{productId}
var ref = new Firebase('url').child('tags').child($tagId).child($productId);
JSON 看起来像这样:
{
"tags":{
"kinda_cool":{
"product_3":true,
"product_6":true
},
"super_cool":{
"product_1":true,
"product_2":true,
"product_4":true,
"product_5":true
}
}
}
除了 true,您还可以存储任何其他相关信息。但是将 $productId
作为键,您可以通过它的标签轻松检索产品。
我有一个包含产品的 noSQL 数据库。这些产品显然有一些特点,我可以根据它们的特性筛选出产品。
这如何与标签一起使用?更具体地说,我应该如何构建节点以便过滤掉带有特定标签的项目?
Firebase
如果您熟悉 Firebase .equalTo(),请跟进:我将如何构建我的 FB 数据库以及如何查询具有特定标签的项目?
我想到的一件事是为节点设置单独的属性,例如:
$productId
/tag_1
/tag_2
但是我必须多次过滤或查询。如何克服这个问题或者有其他方法吗?
您将 tags
放在 products
下方。试试翻转它。
$tagId
/$productId
现在您可以通过标签找到产品,而无需查询。
// https://<my-firebase-app>.firebaseio.com/tags/{tag}/{productId}
var ref = new Firebase('url').child('tags').child($tagId).child($productId);
JSON 看起来像这样:
{
"tags":{
"kinda_cool":{
"product_3":true,
"product_6":true
},
"super_cool":{
"product_1":true,
"product_2":true,
"product_4":true,
"product_5":true
}
}
}
除了 true,您还可以存储任何其他相关信息。但是将 $productId
作为键,您可以通过它的标签轻松检索产品。