sql >> Databáze >  >> NoSQL >> MongoDB

Mongodb find nefunguje s Objectid

Vaše id webových stránek jsou řetězce, zatímco _id, pomocí kterých hledáte, jsou ObjectId. Váš nález neodpovídá žádným výsledkům, protože v tabulce výsledků nejsou žádné dokumenty s hodnotami ObjectId pro prvek "webpageid".

Jak to vidím já, existují dvě řešení.

  1. Pro webpageid můžete místo řetězců uložit ObjectId prvek ve results sbírka. Implementace tohoto je samozřejmě založena na tom, jak se tyto dokumenty dostanou do sbírky.
  2. Můžete vytvořit řetězcovou proměnnou z vráceného ObjectId ve smyčce k porovnání. Například,

    ...
    for(var i = 0; i < docs.length; i++) {
        var docId = docs[i]._id.toString(); // create a string
        db.get('results').findOne({'webpageid':docId}, function(err, doc)
        ...
    

Pokud zvolíte druhou možnost, možná se budete muset podívat, proč je na začátku webpageid úvodní uvozovka hodnotu pro druhý dokument ve results kolekce.

"webpageid" : "\"54960a916ecb16dc3c4880e8"

A konečně, moc toho o vašich požadavcích nevím, ale možná budete chtít přehodnotit MongoDB jako řešení. Zdá se, že vytváříte něco jako JOIN, což je něco, co MongoDB není navrženo tak, aby to dobře zvládalo.




  1. Mongodb - odstranit nulová pole rekurzivně?

  2. Uložte relaci uživatele v Redis s ASP.NET Core v Azure

  3. Jak redis odděluje instanci více uživatelů běžící na stejném serveru?

  4. čas nebo booleovská kontrola