La requête que je veux être exécuté dans MongoDB est comme suit
db.idx.update({"keyword":"Some dynamic keyword"},
{$addToSet:{url: "Some dynamic url"}},
{upsert: True})
J'ai besoin l'équivalent Java de cette requête MongoDB, j'ai essayé beaucoup, mais je continue à obtenir des erreurs. Je suis nouveau à la fois Java et MongoDB mais j'ai hâte d'apprendre, alors s'il vous plaît aidez-moi! Et aussi si vous pouvez m'expliquer le JSON pour cette requête et sa structure. Merci un million à l'avance: D (Y)
EDIT: -
Ce que j'ai essayé: -
client = new MongoClient("localhost");
db = client.getDB("idx");
BasicDBObject lurl = new BasicDBObject();
BasicDBObject lurl2 = new BasicDBObject();
BasicDBObject lkey = new BasicDBObject();
for(Element e : links){
DBCollection colls = db.getCollection(e.text());
lurl.put("$addToSet", e.attr("href"));
lurl2.put("url", new BasicDBObject(lurl));
lkey.put("keyword", e.text());
colls.update(lkey, lurl2, true, false);
}
Les erreurs que je reçois sont les suivantes: -
Exception in thread "main" java.lang.IllegalArgumentException: Document field names can't start with '$' (Bad Key: '$addToSet')
at com.mongodb.DBCollection.validateKey(DBCollection.java:1829)
at com.mongodb.DBCollection._checkKeys(DBCollection.java:1787)
at com.mongodb.DBCollection._checkValue(DBCollection.java:1810)
at com.mongodb.DBCollection._checkKeys(DBCollection.java:1788)
at com.mongodb.DBCollection._checkObject(DBCollection.java:1774)
at com.mongodb.DBCollectionImpl.update(DBCollectionImpl.java:250)
at com.mongodb.DBCollection.update(DBCollection.java:191)
at com.mongodb.DBCollection.update(DBCollection.java:224)
at myse.MySE.extractLinkData(MySE.java:55)
at myse.MySE.crawl(MySE.java:61)
at myse.MySE.main(MySE.java:69)
Java Résultat: 1 BUILD SUCCESSFUL (temps total: 13 secondes)
Vous devez fournir un exemple de code et les erreurs que vous recevez pour montrer votre effort jusqu'à présent. –
@ChristianP J'ai ajouté mon code et les exceptions que je reçois quand j'exécute le programme. S'il vous plaît jeter un oeil dans le (Y) –
Je pense que vous construisez la mauvaise requête. Mettez '" $ addToSet "' dans lurl2 et '" url "' dans 'lurl'. –