Ich habe eine Mongodb-Datenbank mit über 100 Sammlungen. Ich versuche ein Objekt mit einer bekannten ObjectID zu finden, das zu einer (unbekannten) Sammlung dieser Datenbank gehört.MongoDB: Finde ein Objekt anhand seiner ID, ohne die Sammlung zu kennen
Ich habe versucht zu tun:
db.getCollectionNames().forEach(function(collname) {
var object = db[collname].find({'_id' : ObjectId("54d0232ef83ea4000d2c0610")});
if(object._id !== undefined){
printjson("Found in " >> collname);
}
});
... ähnlich dem, was hier vorgeschlagen ist: Loop through all Mongo collections and execute query
Ich bin jedoch keine Ergebnisse aus dem Skript zu bekommen.
Edit:
Wenn ich das tue ich das erwartete Found!
erhalten:
var object = db['rightcollection'].findOne({'_id' : ObjectId("54d0232ef83ea4000d2c0610")});
if(object !== null){
printjson("Found!");
}
Aber die folgenden Renditen 0
(statt nichts, wie im ursprünglichen Beispiel der Rücksendung):
db.getCollectionNames().forEach(function(collname) {
var object = db[collname].findOne({'_id' : ObjectId("54d0232ef83ea4000d2c0610")});
if(object !== null){
printjson("Found in " >> collname);
}
});
Versuchen 'var object = db [collname] .find ({ '_ id': ObjectId ("54d0232ef83ea4000d2c0610") }); '. Mitteilung änderte 'ID' in '_id' – Veeram
Versuchen Sie' findOne' anstelle von 'finden'. – JohnnyHK
@Veeram 'id' statt' _id' war nur ein Tippfehler. Ich habe den ursprünglichen Post bearbeitet. – user41951