2017-09-13 2 views
-2

J'ai des documents stockés dans la collection mongo-db pour le client et là transactions avec ci-dessous le format:La meilleure façon de créer l'index pour MongoDB

{ 
"_id" : ObjectId("59b6992a0b54c9c4a5434088"), 
"Results" : { 
    "id" : "2139623696", 
    "member_joined_date" : ISODate("2010-07-07T00:00:00.000+0000"), 
    "account_activation_date" : ISODate("2010-07-07T00:00:00.000+0000"), 
    "family_name" : "XYZ", 
    "given_name" : "KOKI HOI", 
    "gender" : "Female", 
    "dob" : ISODate("1967-07-20T00:00:00.000+0000"), 
    "preflanguage" : "en-GB", 
    "title" : "MR", 
    "contact_no" : "60193551626", 
    "email" : "[email protected]", 
    "street1" : "address line 1", 
    "street2" : "address line 2", 
    "street3" : "address line 3", 
    "zipcd" : "123456", 
    "city" : "xyz", 
    "countrycd" : "Malaysia", 
    "Transaction" : [ 
     { 
      "txncd" : "411", 
      "txndate" : ISODate("2017-08-02 00:00:00.000000"), 
      "prcs_date" : ISODate("2017-08-02 00:00:00.000000"), 
      "txn_descp" : "Some MALL : SHOP & FLY FREE", 
      "merchant_id" : "6587867dsfd", 
      "orig_pts" : "0.00000", 
      "text" : "Some text" 
     } 
    ] 
} 

Je veux créer un index sur les champs « txn_descp », « txndate » , "member_joined_date", "gender", "dob" pour un accès plus rapide. Quelqu'un peut-il m'aider à créer un index pour ce document? Appréciera toute sorte d'aide et de suggestions.

+1

https://www.google.com/search?q=mongodb+how+to+add+index –

+0

https://docs.mongodb.com/manual/indexes/ – Rumoku

Répondre

1

Lors de la création de l'index, il y a quelques points à garder à l'esprit.

  • Toujours créer l'index pour les requêtes que vous utilisez.
  • Optez pour des index composés autant que possible.
  • Le premier champ de l'indice devrait être celui avec le values.Ie minimum possible, s'il y a un indice avec le sexe et la date de naissance en tant que clés, il est préférable d'avoir {sexe: 1, ddn: 1}
+0

Merci pour le conseil. Je me demande simplement si mes champs liés aux transactions sont hiérarchiquement à l'intérieur (Results -> Transaction -> txndate). Cela aura-t-il un effet pendant la requête? –

+0

Cela affectera la taille de l'index et affectera à son tour l'utilisation de la mémoire. La clé sera "Transaction.txndate" qui prendra plus d'espace pour stocker. Il est toujours préférable d'opter pour des noms de champs de taille moyenne et de conserver le champ d'index au niveau racine. Mais, la structure hiérarchique a aussi des avantages. –

+0

Grande aide .. Merci !!! –