Ho un xml piuttosto grande (> 10mb nella dimensione & 40+ elementi). Attualmente memorizziamo tale xml in Oracle db e usiamo xquery per interrogare e recuperare parti di xml. Questo processo è lento e richiede molte chiamate db. Stiamo esplorando mongodb per memorizzare questo xml e interrogarlo. Ho appena convertito il xml in json e caricato in una raccolta di mongo e ha memorizzato i dati enormi di JSON in un attimo. E memorizza i nodi xml come documenti nidificati. Ma quando interrogo (usando find) per un elemento interno più, restituisce sempre l'intero documento, contenente anche i nodi con valori di elementi non corrispondenti. Mi aspetto solo pochi nodi che corrispondono al valore del nodo dato. Fammi sapere se esiste un modo migliore per archiviare file xml di grandi dimensioni in mongo db. E fammi sapere come recuperare i nodi interni con valori esatti specificati nella query. Grazie in anticipo.Memorizzazione di XML di grandi dimensioni in MongoDB
risposta
Questo è il comportamento del filtro di documenti incorporati a più livelli, normalmente il filtro corrispondente restituisce l'intero documento, non i sottoinsiemi.
Partenza mie risposte per mongodb-querying-array-elements-within-a-document e how-to-find-the-matched-record-in-mongodb per ulteriori informazioni
Può essere è possibile aggiungere lo schema XML di esempio attualmente avete, qualcuno vi aiuterà a strutturare l'applicazione.
Ci sono diversi fatti che si dovrebbe tenere a mente:
Numero 1- MongoDB restituisce solo l'intero documento a seconda che ha colpito o no, non v'è alcuna funzione per restituire solo una parte di essa (10 Ottobre 2011) e se hai bisogno di filtri devi implementarlo con il tuo codice personale.
Numero 2- prestare attenzione a elemmatch parola chiave. Indica di cercare alcuni hit solo nello stesso documento secondario ma non htourghout sull'intero documento, quindi potresti essere confuso qui.
numero 3 - non c'è la giusta strategia per dividere il vostro aggregato in collezione in mongo rispetto a RDBMS-s. Quindi una diversa rappresentazione dei dati potrebbe risolvere il tuo caso.
Numero 4 - nonostante il numero 3 un'osservazione circa il "modo giusto", v'è una raccomandazione generale per mantenere i vostri documenti dimensione inferiore a 10 MB
Si dovrebbe guardare database XML Sausalito: http://www.28msec.com. Sta usando MongoDB come archivio dati.
Hai mai pensato di provare un database XML aggiornato, come BaseX (http://basex.org)? Potrebbe darti risultati migliori, in particolare se hai già usato XQuery.
Ho avuto lo stesso problema. Nel mio caso il nodo di primo livello in ogni file XML conteneva sempre un enorme elenco di nodi più piccoli, quindi alla fine ho archiviato questi elementi. Per farlo, ho scritto il mio strumento da riga di comando xml-to-json. L'ho usato per convertire 10 GB di dati XML in JSON, in un formato che può contenere mongoimport.
- 1. Elaborazione di file xml di grandi dimensioni
- 2. memorizzazione di file di grandi dimensioni in server sql
- 3. Memorizzazione di blob di grandi dimensioni con Objective Appengine
- 4. Visualizzazione di file XML di grandi dimensioni in eclissi?
- 5. creazione di file xml di grandi dimensioni in rubino
- 6. Analisi di file pseudo-xml di grandi dimensioni in python
- 7. Lettura di documenti XML di grandi dimensioni in .net
- 8. Memorizzazione di dimensioni nel file xml in Android
- 9. JAXB può analizzare file XML di grandi dimensioni in blocchi
- 10. Oracle: caricamento di un file xml di grandi dimensioni?
- 11. Come convalidare file XML di grandi dimensioni (> 100 MB)
- 12. Leggi stringa XML di grandi dimensioni dall'istruzione TSQL FOR XML in C# .NET
- 13. Memorizzazione di dimensioni file in un database
- 14. Caricamenti di file di grandi dimensioni
- 15. Leggere in modo efficiente file di testo di grandi dimensioni
- 16. xmlstarlet sel su file di grandi dimensioni
- 17. Memorizzazione di dati base64 in XML?
- 18. File JSON di grandi dimensioni
- 19. C# - Memoria di grandi dimensioni
- 20. Guadagno di prestazioni usando inserimenti di grandi dimensioni rispetto a inserti regolari in MongoDB
- 21. Importazione, visualizzazione e memorizzazione nella cache di dati di grandi dimensioni
- 22. Libreria Java per la memorizzazione e l'elaborazione di grafici di grandi dimensioni (fino a 600k vertici)
- 23. Scrive dati di grandi dimensioni per il problema di memorizzazione nella cache dei file
- 24. Gestire immagini di grandi dimensioni in iOS
- 25. Supporto file di grandi dimensioni in C++
- 26. Pdf RDF di grandi dimensioni in Python
- 27. Leggi file di grandi dimensioni in parallelo?
- 28. Leggere file di grandi dimensioni in Java
- 29. Memorizzazione di grandi quantità di dati: DB o File System?
- 30. Memorizzazione di grandi quantità di immagini in Android
È possibile utilizzare le proiezioni per ottenere una parte di un documento: https://docs.mongodb.com/v3.2/tutorial/project-fields-from-query-results/ –