Las siguientes opciones de modificación de puntaje están disponibles para todos los operadores. Para detalles y ejemplos, haz clic en cualquiera de las siguientes opciones:
boost
La opción boost multiplica la puntuación base de un resultado por un número determinado o el valor de un campo numérico en los documentos. Por ejemplo, puede usar boost para aumentar la importancia de ciertos documentos coincidentes en el resultado.
Nota
No puedes usar las opciones
boostyconstantjuntas.La opción
boostconpathes igual que multiplicar usando lafunctionopción con una expresión de ruta.
Campos
La opción boost toma los siguientes campos:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| float | Condicional | Número por el cual multiplicar la puntuación base por defecto. El valor debe ser un número positivo. Se requiere |
| string | Condicional | Nombre del campo numérico cuyo valor se debe multiplicar por la puntuación base por defecto. Se requiere |
| float | Opcional | Valor numérico para reemplazar |
Ejemplos
Los siguientes ejemplos utilizan la colección movies en la base de datos sample_mflix. Si tienes la conjunto de datos de muestra en su clúster, puede crear el índice MongoDB Search default y ejecutar las consultas de ejemplo en su clúster.
Las queries compuestas de muestra demuestran cómo aumentar la importancia de un criterio de búsqueda sobre otro. Las consultas incluyen una etapa $project para excluir todos los campos excepto title y score.
En el siguiente ejemplo, el operador compuesto utiliza el operador de texto para buscar el término Helsinki en los campos plot y title. La query para el campo title usa score con la opción boost para multiplicar los resultados de la puntuación por 3, tal como se especifica en el campo value.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "compound": { 5 "should": [{ 6 "text": { 7 "query": "Helsinki", 8 "path": "plot" 9 } 10 }, 11 { 12 "text": { 13 "query": "Helsinki", 14 "path": "title", 15 "score": { "boost": { "value": 3 } } 16 } 17 }] 18 } 19 } 20 }, 21 { 22 "$limit": 5 23 }, 24 { 25 "$project": { 26 "_id": 0, 27 "title": 1, 28 "plot": 1, 29 "score": { "$meta": "searchScore" } 30 } 31 } 32 ])
Esta query devuelve los siguientes resultados, en los que la puntuación de los documentos donde el title coincide con el término de consulta se multiplica por 3 desde su valor base:
[ { plot: 'Epic tale about two generations of men in a wealthy Finnish family, spanning from the 1960s all the way through the early 1990s. The father has achieved his position as director of the ...', title: 'Kites Over Helsinki', score: 12.2470121383667 }, { plot: 'Alex is Finlander married to an Italian who works as a taxi driver in Berlin. One night in his taxi come two men with a briefcase full of money. Unluckily for Alex, they are being chased by...', title: 'Helsinki-Naples All Night Long', score: 9.56808090209961 }, { plot: 'The recession hits a couple in Helsinki.', title: 'Drifting Clouds', score: 4.5660295486450195 }, { plot: 'Two teenagers from Helsinki are sent on a mission by their drug dealer.', title: 'Sairaan kaunis maailma', score: 4.041563034057617 }, { plot: 'A murderer tries to leave his criminal past in East Helsinki and make a new life for his family', title: 'Bad Luck Love', score: 3.6251673698425293 } ]
En el siguiente ejemplo, el operador compuesto utiliza el operador de texto para buscar el término Helsinki en los campos plot y title. La query sobre el campo title utiliza score con la opción boost para multiplicar los resultados de puntaje por el campo numérico imdb.rating en path. Si no se encuentra el campo numérico en el path especificado, el operador multiplica la puntuación de los documentos por 3.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "compound": { 5 "should": [{ 6 "text": { 7 "query": "Helsinki", 8 "path": "plot" 9 } 10 }, 11 { 12 "text": { 13 "query": "Helsinki", 14 "path": "title", 15 "score": { 16 "boost": { 17 "path": "imdb.rating", 18 "undefined": 3 19 } 20 } 21 } 22 }] 23 } 24 } 25 }, 26 { 27 "$limit": 5 28 }, 29 { 30 "$project": { 31 "_id": 0, 32 "title": 1, 33 "plot": 1, 34 "score": { "$meta": "searchScore" } 35 } 36 } 37 ])
Esta consulta devuelve los siguientes resultados, en los que la puntuación de los documentos donde el campo title coincide con el término de consulta se multiplica a partir de su valor base por el valor del campo numérico imdb.rating o 3, si el campo no se encuentra en los documentos:
[ { plot: 'Epic tale about two generations of men in a wealthy Finnish family, spanning from the 1960s all the way through the early 1990s. The father has achieved his position as director of the ...', title: 'Kites Over Helsinki', score: 24.902257919311523 }, { plot: 'Alex is Finlander married to an Italian who works as a taxi driver in Berlin. One night in his taxi come two men with a briefcase full of money. Unluckily for Alex, they are being chased by...', title: 'Helsinki-Naples All Night Long', score: 20.411907196044922 }, { plot: 'The recession hits a couple in Helsinki.', title: 'Drifting Clouds', score: 4.5660295486450195 }, { plot: 'Two teenagers from Helsinki are sent on a mission by their drug dealer.', title: 'Sairaan kaunis maailma', score: 4.041563034057617 }, { plot: 'A murderer tries to leave his criminal past in East Helsinki and make a new life for his family', title: 'Bad Luck Love', score: 3.6251673698425293 } ]
constant
La opción constant reemplaza la puntuación base con un número especificado.
Nota
No debes usar las opciones constant y boost juntas.
Ejemplos
El siguiente ejemplo utiliza el índice por defecto en la colección sample_mflix.movies para query los campos plot y title utilizando el operador compuesto. En la consulta, el operador text utiliza score con la opción constant para reemplazar todos los resultados de puntuación con 5 para los resultados que solo coincidan con el campo title.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "compound": { 5 "should": [{ 6 "text": { 7 "query": "tower", 8 "path": "plot" 9 } 10 }, 11 { 12 "text": { 13 "query": "tower", 14 "path": "title", 15 "score": { "constant": { "value": 5 } } 16 } 17 }] 18 } 19 } 20 }, 21 { 22 "$limit": 5 23 }, 24 { 25 "$project": { 26 "_id": 0, 27 "title": 1, 28 "plot": 1, 29 "score": { "$meta": "searchScore" } 30 } 31 } 32 ])
La consulta anterior devuelve los siguientes resultados, en los que la puntuación de los documentos que coinciden con la query solo en el campo title se reemplaza con el valor constant especificado:
1 [ 2 { 3 plot: 'Several months after witnessing a murder, residents of Tower Block 31 find themselves being picked off by a sniper, pitting those lucky enough to be alive into a battle for survival.', 4 title: 'Tower Block', 5 score: 8.15460205078125 6 }, 7 { 8 plot: "When a group of hard-working guys find out they've fallen victim to their wealthy employer's Ponzi scheme, they conspire to rob his high-rise residence.", 9 title: 'Tower Heist', 10 score: 5 11 }, 12 { 13 plot: 'Toru Kojima and his friend Koji are young student boys with one thing in common - they both love to date older women. Koji is a playboy with several women, young and older, whereas Toru is a romantic with his heart set on on certain lady.', 14 title: 'Tokyo Tower', 15 score: 5 16 }, 17 { 18 plot: 'A middle-aged mental patient suffering from a split personality travels to Italy where his two personalities set off all kinds of confusing developments.', 19 title: 'The Leaning Tower', 20 score: 5 21 }, 22 { 23 plot: 'A documentary that questions the cost -- and value -- of higher education in the United States.', 24 title: 'Ivory Tower', 25 score: 5 26 } 27 ]
embedded
Nota
Puedes utilizar esta opción solo con el operador embeddedDocument.
La opción embedded te permite configurar cómo:
Agrega los puntajes de varios documentos incrustados coincidentes.
Modifica la puntuación de un documento incrustado operador después de sumar las puntuaciones de los documentos insertados que coincidan.
Nota
El tipo embeddedDocuments de MongoDB Search, el operador embeddedDocument y la opción de puntuación embedded están en vista previa.
Campos
La opción embedded toma los siguientes campos:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| string | Opcional | Configura cómo combinar los puntajes de documentos incrustados coincidentes. El valor debe ser una de las siguientes estrategias de agregación:
Si se omite, este campo se establece por defecto en |
| Opcional | Especifica la modificación de puntuación que se aplicará después de aplicar la estrategia de agregación. |
Ejemplos
La siguiente consulta de ejemplo utiliza un índice llamado default en la colección sample_analytics.transactions. El índice configura un tipo embeddedDocuments en los documentos del arreglo transactions y un tipo string para los campos transactions.symbol y transactions.transaction_code.
Ejemplo
{ "mappings": { "dynamic": true, "fields": { "transactions": { "dynamic": true, "fields": { "symbol": { "type": "string" }, "transaction_code": { "type": "string" } }, "type": "embeddedDocuments" } } } }
La consulta de muestra en el campo transactions, que contiene una matriz de documentos, incluye una etapa $limit para limitar la salida a 10 resultados y una etapa $project para:
Exceptuar todos los campos excepto
account_idytransaction_count.Agrega un campo llamado
scoreque aplique una estrategia de agregación y una mayor modificación de la puntuación.Nota
Puede usar
functiondentro de la opciónscoredeloperatordel operador embeddedDocument. Sin embargo, para las expresiones de score de función que requieren la opciónpath, el campo numérico que especifiques comopathpara la expresión debe encontrarse dentro delpathdel operador embeddedDocument. Por ejemplo, en la siguiente query de ejemplo, el campotransactions.amountque se especifica dentro de la opciónscoredel operador compuesto en la línea 24 está dentro de la ruta del operadorembeddedDocumenttransactionsen la línea 4.
La query busca las cuentas que han comprado AMD y multiplica la mayor compra individual de AMD (por número de acciones) por el valor de log1p del número de transacciones que la cuenta ha realizado en este periodo. Clasifica las cuentas en función de lo siguiente:
Número de
AMDcomprados en una sola transacciónNúmero de transacciones en el último periodo
1 db.transactions.aggregate({ 2 "$search": { 3 "embeddedDocument": { 4 "path": "transactions", 5 "operator": { 6 "compound": { 7 "must": [ 8 { 9 "text": { 10 "path": "transactions.symbol", 11 "query": "amd" 12 } 13 }, 14 { 15 "text": { 16 "path": "transactions.transaction_code", 17 "query": "buy" 18 } 19 } 20 ], 21 "score": { 22 "function": { 23 "path": { 24 "value": "transactions.amount", 25 "undefined": 1.0 26 } 27 } 28 } 29 } 30 }, 31 "score": { 32 "embedded": { 33 "aggregate": "maximum", 34 "outerScore": { 35 "function": { 36 "multiply": [ 37 { 38 "log1p": { 39 "path": { 40 "value": "transaction_count" 41 } 42 } 43 }, 44 { 45 "score": "relevance" 46 } 47 ] 48 } 49 } 50 } 51 } 52 } 53 } 54 }, 55 { "$limit": 10 }, 56 { 57 "$project": { 58 "_id": 0, 59 "account_id": 1, 60 "transaction_count": 1, 61 "score": { $meta: "searchScore" } 62 } 63 })
MongoDB Search califica altamente las cuentas que han realizado muchas transacciones en el último periodo y han comprado muchas AMD en una sola transacción.
1 [ 2 { account_id: 467651, transaction_count: 99, score: 19982 }, 3 { account_id: 271554, transaction_count: 96, score: 19851.822265625 }, 4 { account_id: 71148, transaction_count: 99, score: 19840 }, 5 { account_id: 408143, transaction_count: 100, score: 19836.76953125 }, 6 { account_id: 977774, transaction_count: 98, score: 19822.64453125 }, 7 { account_id: 187107, transaction_count: 96, score: 19754.470703125 }, 8 { account_id: 492843, transaction_count: 97, score: 19744.998046875 }, 9 { account_id: 373169, transaction_count: 93, score: 19553.697265625 }, 10 { account_id: 249078, transaction_count: 89, score: 19436.896484375 }, 11 { account_id: 77690, transaction_count: 90, score: 19418.017578125 } 12 ]
function
La opción function te permite alterar la puntuación final del documento usando un campo numérico. Puedes especificar el campo numérico para calcular el puntaje final a través de una expresión. Si el resultado final de la puntuación de la función es menor que 0, MongoDB Search reemplaza el puntaje por 0.
Nota
Puede usar function dentro de la opción score del operador embeddedDocument de operator. Sin embargo, para las expresiones de puntuación por función que requieren la opción path, el campo numérico que especifiques como path para la expresión debe estar dentro del path del operador embeddedDocument.
Expresiones
Utilice las siguientes expresiones con la opción function para alterar la puntuación final del documento:
Expresiones aritméticas, que suman o multiplican una serie de números.
Expresiones constantes, que permiten un número constante en la puntuación de la función.
Expresiones de decaimiento gaussiano, que decaen o reducen las puntuaciones multiplicando a una tasa especificada.
Expresiones de trayectoria, las cuales incorporan un valor numérico indexado de campo en una valoración de función.
Expresiones de puntuación, que devuelven la puntuación de relevancia asignada por la Búsqueda de MongoDB.
Expresiones unarias, que son expresiones que toman un único argumento. En MongoDB Search, puedes calcular el registro10(x) o registro10(x+1) de un número especificado.
Nota
Las puntuaciones de MongoDB Search función siempre son valores de float y se podría perder precisión para números muy grandes o pequeños.
Una expresión aritmética suma o multiplica una serie de números. Por ejemplo, se puede utilizar una expresión aritmética para modificar el ranking de relevancia a través de un campo numérico proveniente de una pipeline de enriquecimiento de datos. Debe incluir una de las siguientes opciones:
Opción | Tipo | Descripción | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| arreglo de expresiones | Añade una serie de números. Toma un arreglo de expresiones, que pueden tener valores negativos. La longitud del arreglo debe ser mayor o igual a Sintaxis de expresiones aritméticas En el ejemplo anterior, MongoDB Search utiliza las expresiones
| ||||||||||||||||
| arreglo de expresiones | Multiplica una serie de números. Toma un array de expresiones, que pueden tener valores negativos. La longitud del array debe ser mayor o igual Sintaxis de expresiones aritméticas En el ejemplo anterior, MongoDB Search usa las expresiones
|
Nota
No puedes reemplazar una expresión aritmética que evalúa como undefined por un valor constante.
Una expresión constante permite un número constante en la puntuación de la función. Por ejemplo, puede utilizar constant para modificar el ranking de relevancia mediante un valor numérico de un pipeline de enriquecimiento de datos. Debe incluir la siguiente opción:
Opción | Tipo | Descripción |
|---|---|---|
| float | Número que indica un valor fijo. MongoDB Search admite valores negativos. |
Ejemplo
{ "function": { "constant": -23.78 } }
Una expresión de decaimiento gaussiano te permite decaer o reducir, multiplicando, las puntuaciones finales de los documentos en función de la distancia de un valor de campo numérico desde un punto de origen especificado. decay se calcula como:

donde sigma se calcula para asegurar que la puntuación tome el valor decay, a una distancia scale de origin±offset:
Por ejemplo, puede usar gauss para ajustar la puntuación relevante de los documentos según su actualidad o la fecha que influye en una clasificación más alta. gauss toma las siguientes opciones:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| doble | Opcional | Tasa a la que deseas multiplicar las puntuaciones. El valor debe ser un número positivo entre Para los documentos cuyo valor de campo numérico (especificado mediante |
| doble | Opcional | Número para usar para determinar la distancia desde el origen. La operación de decaimiento se realiza sólo para los documentos cuyas distancias son mayores que |
| doble | Requerido | Punto de origen desde el cual calcular la distancia. |
| Requerido | Nombre del campo numérico cuyo valor desea utilizar para multiplicar la puntuación base. | |
| doble | Requerido | Distancia desde |
Ejemplo
{ "function": { "gauss": { "path": { "value": "rating", "undefined": 50 }, "origin": 95, "scale": 5, "offset": 5, "decay": 0.5 } } }
Supongamos que la calificación máxima es 100. MongoDB Search utiliza el campo rating en los documentos para decaer la puntuación:
Mantiene la puntuación actual para los documentos con calificación entre
90y100.Multiplica la puntuación actual por
0.5para los documentos con una calificación inferior a90.Multiplica la puntuación actual por
0.25para documentos con una puntuación inferior a85, y así sucesivamente.
Una expresión de ruta incorpora un valor de campo numérico indexado en una puntuación de función. Puede ser string o object.
Si es string, el valor es el nombre del campo numérico donde se buscará la expresión de ruta.
Ejemplo
{ "function": { "path": "rating" } }
MongoDB Search incorpora el valor numérico del campo rating en la puntuación final del documento.
Si object, la expresión de ruta toma las siguientes opciones:
Opción | Tipo | Necesidad | Descripción |
|---|---|---|---|
| string | Requerido | Nombre del campo numérico. El campo puede contener valores numéricos negativos. |
| float | Opcional | Valor a utilizar si falta en el documento el campo numérico especificado con |
Ejemplo
{ "function": { "path": {"value": "quantity", "undefined": 2} } }
MongoDB Search incorpora el valor numérico del campo quantity o 2, si el campo quantity no está presente en el documento, en la puntuación final del documento.
Una expresión de ruta no puede ser una array y no puede contener expresión regular ni comodín en el path.
Una expresión de puntuación representa la puntuación de relevancia de la consulta, que es la puntuación que MongoDB Search asigna a los documentos según su relevancia. Es igual a la puntuación actual del documento. Debe incluir la siguiente opción:
Opción | Tipo | Descripción |
|---|---|---|
| string | Valor de la puntuación de relevancia de la query. El valor debe ser |
Ejemplo
{ "function": { "score": "relevance" } }
Una expresión unaria es una expresión que toma un solo argumento. En MongoDB Search, puedes usar expresiones unarias para calcular el registro10(x) o registro10(x+1) de un número especificado. Por ejemplo, puedes utilizar log1p para influir en la puntuación de relevancia mediante la puntuación de popularidad del documento. Debe incluir una de las siguientes opciones:
Opción | Tipo | Descripción | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Calcula el log10 de un número. Por ejemplo: Sintaxis de expresión unaria En el ejemplo anterior, MongoDB Search calcula el registro10 de la expresión aritmética que utiliza la opción Si la expresión especificada para la opción Sintaxis de expresión unaria En el ejemplo anterior, MongoDB Search evalúa el registro10 de la expresión constante | |||||||||||||||||||
| Suma Sintaxis de expresión unaria En el ejemplo anterior, MongoDB Search agrega |
Ejemplos
Los siguientes ejemplos utilizan el índice predeterminado de la colección sample_mflix.movies para consultar el campo title. Las consultas de ejemplo incluyen una etapa $limit para limitar la salida a 5 resultados y una etapa $project para excluir todos los campos excepto title y score.
Ejemplo
En este ejemplo, el operador de texto utiliza score con la opción function para multiplicar lo siguiente:
Valor numérico de la expresión de ruta, que es el valor del campo
imdb.ratingen los documentos o2, si el campoimdb.ratingno se encuentra en el documentoPuntuación de relevancia, o la puntuación actual del documento
db.movies.aggregate([{ "$search": { "text": { "path": "title", "query": "men", "score": { "function":{ "multiply":[ { "path": { "value": "imdb.rating", "undefined": 2 } }, { "score": "relevance" } ] } } } } }, { $limit: 5 }, { $project: { "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } }])
Esta query devuelve los siguientes resultados, en los que la puntuación es reemplazada por el valor function especificado:
{ "title" : "Men...", "score" : 23.431293487548828 } { "title" : "12 Angry Men", "score" : 22.080968856811523 } { "title" : "X-Men", "score" : 21.34803581237793 } { "title" : "X-Men", "score" : 21.34803581237793 } { "title" : "Matchstick Men", "score" : 21.05954933166504 }
Ejemplo
En el siguiente ejemplo, el operador texto usa score con la opción function para reemplazar la puntuación actual del documento con el valor numérico constante de 3.
db.movies.aggregate([ { "$search": { "text": { "path": "title", "query": "men", "score": { "function":{ "constant": 3 } } } } }, { $limit: 5 }, { $project: { "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } } ])
Esta query devuelve los siguientes resultados, en los que la puntuación es reemplazada por el valor function especificado:
{ "title" : "Men Without Women", "score" : 3 } { "title" : "One Hundred Men and a Girl", "score" : 3 } { "title" : "Of Mice and Men", "score" : 3 } { "title" : "All the King's Men", "score" : 3 } { "title" : "The Men", "score" : 3 }
Ejemplo
En el siguiente ejemplo, el operador texto utiliza score con la opción function para reducir la puntuación de relevancia de los documentos en el resultado.
La query especifica que para los documentos cuyo valor en el campo imdb.rating o 4.6, si el campo imdb.rating no está presente en los documentos, es scale de distancia, lo que es 5, de origin, que es 9.5, más o menos offset, que es 0, MongoDB Search debe multiplicar la puntuación usando decay, que comienza en 0.5. Esta consulta incluye una etapa $limit para limitar la salida a un máximo de 10 resultados y una etapa $project para agregar el campo imdb.rating en los resultados.
db.movies.aggregate([ { "$search": { "text": { "path": "title", "query": "shop", "score": { "function":{ "gauss": { "path": { "value": "imdb.rating", "undefined": 4.6 }, "origin": 9.5, "scale": 5, "offset": 0, "decay": 0.5 } } } } } }, { "$limit": 10 }, { "$project": { "_id": 0, "title": 1, "imdb.rating": 1, "score": { "$meta": "searchScore" } } } ])
Esta query devuelve los siguientes resultados:
[ { title: 'The Shop Around the Corner', imdb: { rating: 8.1 }, score: 0.9471074342727661 }, { title: 'Exit Through the Gift Shop', imdb: { rating: 8.1 }, score: 0.9471074342727661 }, { title: 'The Shop on Main Street', imdb: { rating: 8 }, score: 0.9395227432250977 }, { imdb: { rating: 7.4 }, title: 'Chop Shop', score: 0.8849083781242371 }, { title: 'Little Shop of Horrors', imdb: { rating: 6.9 }, score: 0.8290896415710449 }, { title: 'The Suicide Shop', imdb: { rating: 6.1 }, score: 0.7257778644561768 }, { imdb: { rating: 5.6 }, title: 'A Woman, a Gun and a Noodle Shop', score: 0.6559237241744995 }, { title: 'Beauty Shop', imdb: { rating: 5.4 }, score: 0.6274620294570923 } ]
Para comparar los resultados de las expresiones gausianas utilizadas en la query anterior con la puntuación de relevancia que se retorna en los resultados de MongoDB Search, ejecutar la siguiente query:
db.movies.aggregate([ { "$search": { "text": { "path": "title", "query": "shop" } } }, { "$limit": 10 }, { "$project": { "_id": 0, "title": 1, "imdb.rating": 1, "score": { "$meta": "searchScore" } } } ])
Esta query devuelve los siguientes resultados:
[ { title: 'Beauty Shop', imdb: { rating: 5.4 }, score: 4.111973762512207 }, { imdb: { rating: 7.4 }, title: 'Chop Shop', score: 4.111973762512207 }, { title: 'The Suicide Shop', imdb: { rating: 6.1 }, score: 3.5363259315490723 }, { title: 'Little Shop of Horrors', imdb: { rating: 6.9 }, score: 3.1020588874816895 }, { title: 'The Shop Around the Corner', imdb: { rating: 8.1 }, score: 2.762784481048584 }, { title: 'The Shop on Main Street', imdb: { rating: 8 }, score: 2.762784481048584 }, { title: 'Exit Through the Gift Shop', imdb: { rating: 8.1 }, score: 2.762784481048584 }, { imdb: { rating: 5.6 }, title: 'A Woman, a Gun and a Noodle Shop', score: 2.0802340507507324 } ]
Ejemplo
En el siguiente ejemplo, el operador de texto utiliza score con la function opción para reemplazar el puntaje de relevancia de la consulta con el valor del campo numérico imdb.rating o,4.6 si el imdb.rating campo no está presente en los documentos.
db.movies.aggregate([{ "$search": { "text": { "path": "title", "query": "men", "score": { "function":{ "path": { "value": "imdb.rating", "undefined": 4.6 } } } } } }, { $limit: 5 }, { $project: { "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } }])
Esta query devuelve los siguientes resultados, en los que la puntuación es reemplazada por el valor function especificado:
{ "title" : "12 Angry Men", "score" : 8.899999618530273 } { "title" : "The Men Who Built America", "score" : 8.600000381469727 } { "title" : "No Country for Old Men", "score" : 8.100000381469727 } { "title" : "X-Men: Days of Future Past", "score" : 8.100000381469727 } { "title" : "The Best of Men", "score" : 8.100000381469727 }
Ejemplo
En el siguiente ejemplo, el operador text utiliza score con la opción function para devolver la puntuación de relevancia, que es la misma que la puntuación actual, de los documentos.
db.movies.aggregate([{ "$search": { "text": { "path": "title", "query": "men", "score": { "function":{ "score": "relevance" } } } } }, { "$limit": 5 }, { "$project": { "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } }])
Esta query devuelve los siguientes resultados, en los que la puntuación es reemplazada por el valor function especificado:
{ "title" : "Men...", "score" : 3.4457783699035645 } { "title" : "The Men", "score" : 2.8848698139190674 } { "title" : "Simple Men", "score" : 2.8848698139190674 } { "title" : "X-Men", "score" : 2.8848698139190674 } { "title" : "Mystery Men", "score" : 2.8848698139190674 }
Ejemplo
En el siguiente ejemplo, el operador de texto utiliza score con la function opción para calcular el logaritmo10 del imdb.rating campo o,10 si el imdb.rating campo no está presente en el documento.
db.movies.aggregate([{ "$search": { "text": { "path": "title", "query": "men", "score": { "function": { "log": { "path": { "value": "imdb.rating", "undefined": 10 } } } } } } }, { "$limit": 5 }, { "$project": { "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } }])
Esta query devuelve los siguientes resultados, en los que la puntuación es reemplazada por el valor function especificado:
{ "title" : "12 Angry Men", "score" : 0.9493899941444397 } { "title" : "The Men Who Built America", "score" : 0.9344984292984009 } { "title" : "No Country for Old Men", "score" : 0.9084849953651428 } { "title" : "X-Men: Days of Future Past", "score" : 0.9084849953651428 } { "title" : "The Best of Men", "score" : 0.9084849953651428 }