J'ai un DB Mongo COLLeCTION comme le montreMongoDB: Comment faire une requête dans Array Structured Collection.
{
"name": "SAM",
"collection": [
{
"date": "2013-03-16",
"values": [
{
"price": "24.0"
}
]
},
{
"date": "2013-04-20",
"values": [
{
"price": "10.0"
}
]
},
{
"date": "2013-05-18",
"values": [
{
"price": "12.0"
}
]
},
{
"date": "2013-06-22",
"values": [
{
"price": "10.0"
}
]
},
{
"date": "2013-09-21",
"values": [
{
"price": "38.0"
}
]
}
]
}
Je tentais d'obtenir des données relatives à une date particulière (16/03/2013) comme indiqué Mais je reçois des données de toutes les dates.
C'est ce que j'ai essayé.
S'il vous plaît dites-moi où je fais erreur.
package com;
import java.net.UnknownHostException;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
public class Test {
public static void main(String args[]) throws UnknownHostException {
Mongo mongo = new Mongo();
DB db = mongo.getDB("test");
DBCollection mycollection = db.getCollection("mycollection");
BasicDBObject query = new BasicDBObject();
query.put("name", "SAM");
query.put("collection.date", "2013-03-16");
DBCursor cursor = mycollection.find(query);
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
}
MongoDB retourne l'ensemble du dossier et non un sous-ensemble d'un disque lors d'une requête. Votre "collection" ci-dessus semble être un seul enregistrement. Vous pourriez essayer de décomposer ceci en dossiers individuels, chacun avec le nom, la date et les valeurs. –
Si vous devez utiliser le tableau incorporé pour votre schéma, vous pouvez utiliser l'opérateur '$ unwind' du cadre d'agrégation pour découper le document unique en un document par entrée dans le tableau incorporé. – slee
Merci pour la réponse, mais je ne peux pas changer la structure de la base de données. Donc, vous voulez dire qu'il n'est pas possible d'éviter le retour de tout le dossier. – Pawan