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

Efekt generování mongodb _id na indexování

Mnohem lepším řešením by bylo ponechat _id sloupec tak, jak je, a mají samostatné userId a folderId pole v dokumentu, nebo vytvořte samostatné pole s oběma zkombinovanými.

Pokud jde o to, zda to bude "stejně rychlé" ... záleží na vašem dotazu, ale například při objednávání podle data "vytvoření" dokumentu byste ztratili možnost jednoduše objednávat podle _id také byste přišli o výhody pro sharding a distribuci .

Pokud však chcete pro své _id použít obě tato ID existuje ještě jedna možnost ...

Ve skutečnosti můžete použít obě ale nechte je oddělené ... například toto je platné _id :

> var doc = { "_id" : { "userID" : 12345, "folderID" : 5152 }, 
              "field1" : "test", "field2" : "foo" };
> db.crazy.save(doc);
> db.crazy.findOne();
{
        "_id" : {
                "userID" : 12345,
                "folderID" : 5152
        },
        "field1" : "test",
        "field2" : "foo"
}
> 


  1. Jak mohu zkontrolovat, zda pole v MongoDB existuje nebo ne?

  2. Mongoose neaktualizuje můj dokument, pokud nemám funkci zpětného volání

  3. Jak porovnám data z dat Twitteru uložených v MongoDB přes PyMongo?

  4. Aktualizuje operace Mongoose upsert/obnovuje výchozí hodnoty schématu?