Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’opérateur $meta de projection est utilisé pour inclure des métadonnées dans les résultats d’une requête. Il est utile d’inclure des métadonnées telles que des scores de recherche de texte ou d’autres valeurs calculées dans les documents de sortie.
Syntaxe
La syntaxe d’utilisation de l’opérateur $meta de projection est la suivante :
db.collection.find({
$text: {
$search: < string >
}
}, {
field: {
$meta: < metaDataKeyword >
}
})
Paramètres
| Paramètre | Descriptif |
|---|---|
field |
Nom du champ dans les documents de sortie où les métadonnées sont incluses. |
metaDataKeyword |
Type de métadonnées à inclure des mots clés courants comme textScore pour les scores de recherche de texte. |
Examples
Considérez cet exemple de document de la collection des magasins.
{
"_id": "34f462fe-5085-4a77-a3de-53f4117466bd",
"name": "Wide World Importers",
"location": {
"lat": -63.5435,
"lon": 77.7226
},
"staff": {
"totalStaff": {
"fullTime": 16,
"partTime": 16
}
},
"sales": {
"totalSales": 41481,
"salesByCategory": [
{
"categoryName": "Holiday Tableware",
"totalSales": 41481
}
]
},
"promotionEvents": [
{
"eventName": "Crazy Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2023,
"Month": 11,
"Day": 13
},
"endDate": {
"Year": 2023,
"Month": 11,
"Day": 22
}
},
"discounts": [
{
"categoryName": "Gift Boxes",
"discountPercentage": 9
},
{
"categoryName": "Holiday Tableware",
"discountPercentage": 24
}
]
},
{
"eventName": "Incredible Savings Showcase",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 5,
"Day": 11
},
"endDate": {
"Year": 2024,
"Month": 5,
"Day": 20
}
},
"discounts": [
{
"categoryName": "Ribbons",
"discountPercentage": 15
},
{
"categoryName": "Gift Bags",
"discountPercentage": 25
}
]
}
],
"tag": [
"#ShopLocal",
"#FashionStore",
"#SeasonalSale",
"#FreeShipping",
"#MembershipDeals"
]
}
Exemple 1 : Inclusion des scores de recherche de texte
Pour inclure le score de recherche de texte dans les résultats d’une requête de recherche de texte.
db.stores.createIndex({ "name": "text"});
db.stores.find(
{ $text: { $search: "Equipment Furniture Finds" } },
{ _id: 1, name: 1, score: { $meta: "textScore" } }
).sort({ score: { $meta: "textScore" } }).limit(2)
Les deux premiers résultats retournés par cette requête sont les suivants :
[
{
_id: 'cf1448e9-5493-49b5-95da-ab8a105b5240',
name: 'Tailwind Traders | Camera Market - Wolfmouth',
score: 4
},
{
_id: '4fd389af-4693-4c02-93cf-0d80ae8ace07',
name: 'Wide World Importers | Camera Collection - South Cordelia',
score: 4
}
]
Limitation
- Si aucun index n’est utilisé, { $meta : « indexKey » } ne retourne rien.
Contenu connexe
- Passez en revue les options de migration de MongoDB vers Azure DocumentDB.
- En savoir plus sur la compatibilité des fonctionnalités avec MongoDB.