MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как мога да намеря подобни документи в MongoDB?

На първо място, вашите данни трябва да бъдат премоделирани, както е показано по-долу:

{
  name: "Burger",
  ingredients: [
    "bread",
    "cheese",
    "tomato",
    "beef"
  ]
}

Допълнителният „Елемент“ не добавя допълнителна информация, нито помага за достъп до данните по някакъв начин.

След това трябва да създадете текстов индекс . Това се посочва в документите

Така че ние просто правим a

db.collection.ensureIndex({"ingredients":"text"})

Сега можем да направим $text търсене :

db.collection.find(
  { $text: { $search: "bread beef" } },
  { score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )

който трябва да ви предостави най-подходящите документи.

Но това, което можете да направите, е нетекстово търсене за директни съвпадения:

db.collection.find({ingredients:"beef"})

или за множество съставки

db.collections.find({ ingredients: { $all: ["beef","bread"] } })

Така че за търсене по въведени от потребителя можете да използвате текстовото търсене, а за търсене по избрани съставки можете да използвате нетекстовото търсене.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Приложението Meteor се изпълняваше с pm2 ФАТАЛНА ГРЕШКА:CALL_AND_RETRY_LAST Неуспешно разпределение - JavaScript купчината няма памет

  2. как да актуализирате колекция Mongo.db в meteor.js?

  3. Как се използва IAsyncCursor за итерация с драйвера mongodb c#?

  4. MongoDB $toBool

  5. как да направя променлива уникален ключ в mongoose?