Я должен сделать запрос из коллекции mongodb, которая содержит отчеты CVE обо всех программах, как указано в nvd. Очевидно, что с помощью функции поиска я могу запрашивать только первые 20 документов. Есть ли другой возможный способ запроса данных из базы данных на основе названия продукта и поставщика? База данных содержит около 20 000 документов и находится в форме вложенного массива.
<html>
<body background="img/bluebg.jpg">
<?php
$f = $_POST["From"];
$t= $_POST["To"];
<script type="text/javascript">
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/nvd';
var obj = require("C:\MAMP\htdocs\mapping.json");
MongoClient.connect(url, function(err, db) {
for (i in obj.sector) {
v=obj.sector[i].Vendor;
for (j in obj.sector[i].Products) {
p = obj.sector[i].Products[j];
console.log(v);
console.log(p);
db.general.find( {
CVE_Items:{
affects:{
vendor:{
vendor_name:v,
product:{
product_name:p
}
}
}
}
} )
// var cursor = db.collection('general').find();
//
// cursor.each(function(err, doc) {
//
// console.log(doc);
//});
//var obj = require("C:\MAMP\htdocs\mapping.json");
</script>
?>
</br>
<p1><b>VENDOR : </b></p1>
<?php echo $v; ?></br>
<p1><b>PRODUCT : </b></p1>
<?php echo $p; ?></br></br></br></br>
<table>
<tbody>
<tr>
<th>Published</th>
<th>CWE</th>
<th>CVE ID</th>
<th>Modified</th>
<th>Summary</th>
</tr>
<?php foreach ($characters as $character) : ?>
<tr>
<td> <?php echo $character->Published; ?> </td>
<td> <?php echo $character->cwe; ?> </td>
<td> <?php echo $character->id; ?> </td>
<td> <?php echo $character->Modified; ?> </td>
<td> <?php echo $character->summary; ?> </td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</body>
</html>
Это пример файла json, из которого я сопоставляю каждого поставщика с продуктом, а затем извлекаю cve этого продукта.
{
"sector" :[
{ "Vendor" : "Microsoft", "Products":["windows_10" , "office" , "word"]},
{ "Vendor" : "Oracle", "Products":["sql_trace_analyzer" , "project_contracts"]},
]
}