{
"3d7e0037-28b90529e35b":{
"content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis111111 aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date":1533572483706
},
"9b135f7-05d34d6a8d8b":{
"content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis222222 aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date":1533559442633
},
"b91c71-be1e-8b87a2a57344":{
"content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis222222 aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date":1533571768913
},
"f07726-ad27-e1f26b4dacd9":{
"content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis333333 aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date":1533567800575
}
}
从上面的JSON中,我想搜索“内容”中的字符串,并在整个JSON中获得它的全部出现。例如,在此示例中,我要搜索“ Duis222222”,该返回值应为2。
答案 0 :(得分:1)
获取对象的所有键,然后使用reduce
方法。在回调函数中,使用content
检查indexOf
是否包含特定的字符串。如果是这样,则添加1
let obj = {
"3d7e0037-28b90529e35b": {
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis111111 aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date": 1533572483706
},
"9b135f7-05d34d6a8d8b": {
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis222222 aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date": 1533559442633
},
"b91c71-be1e-8b87a2a57344": {
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis222222 aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date": 1533571768913
},
"f07726-ad27-e1f26b4dacd9": {
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis333333 aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date": 1533567800575
}
}
let strToFind = 'Duis222222';
let getAllValues = Object.keys(obj);
let getCount = getAllValues.reduce(function(acc, curr) {
//here obj will the main object & curr will be each element from array of
//keys which we got from Object.keys
if (obj[curr].content.indexOf(strToFind) !== -1) {
acc += 1
}
return acc;
}, 0);
console.log(getCount)
答案 1 :(得分:1)
获取键后,可以在其上使用 var dir = FSDirectory.Open(new DirectoryInfo(@"C:/test_lucene"));
。
filter
答案 2 :(得分:0)
在数据库中元素数量增加的情况下,搜索实时数据库返回的整个JSON树可能特别低效且成本很高。实际上,每次您都将下载整个JSON树并在客户端上执行“搜索”代码。
如果您知道数据库量将增加,建议您使用全文搜索解决方案,该解决方案可在官方Cloud Functions模板列表here中找到。它显示了“如何通过使用Algolia托管的搜索服务在Firebase数据库元素上启用全文搜索”。
当然,如果要把您的JSON对象限制为少量的(日期,内容)对,那么可以使用其他答案中提出的解决方案,而不会出现上述缺点。