Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ /

Como executar consultas de string de pesquisa do Atlas Search em campos numéricos e de data

Nesta página

  • Crie uma visualização materializada na collection
  • Crie índices do Atlas Search nos campos da visualização materializada
  • Realizar pesquisa de texto em campos convertidos

Este tutorial descreve como executar queries do Atlas Search nos campos string, date e number na coleção sample_airbnb.listingsAndReviews. Você criará uma visualização materializada que armazena os valores de campo numérico e de data como strings. Em seguida, você criará um índice do Atlas Search na visualização materializada e executará queries nesses campos de string usando os operadores queryString e de preenchimento automático. Este tutorial orienta você pelas seguintes etapas:

  1. Crie uma visualização materializada nos campos name sample_airbnb.listingsAndReviews da collection , property_type, last_scraped e accomodates .

  2. Configure índices dinâmicos e estáticos do Atlas Search na visualização materializada.

  3. Execute queries do Atlas Search nos campos na visualização materializada usando os operadores queryString e autocomplete para pesquisar propriedades.

Antes de começar, certifique-se de que seu Atlas cluster atenda aos requisitos descritos nos Pré-requisitos.

Para criar um índice do Atlas Search, você deve ter acesso do Project Data Access Admin ou superior ao projeto.

Nesta seção, você criará uma visualização materializada chamada airbnb-mat-view para campos name, property_type, last_scraped, accomodates e maximum_nights na coleção airbnb_listingsAndReviews. A visualização materializada permite pegar os campos numéricos e de data na coleção de origem e armazená-los como campos de string na visualização materializada.

1

Abra o mongosh em uma janela do terminal e conecte ao seu cluster. Para obter instruções detalhadas sobre a conexão, consulte Conectar via mongosh.

2
  1. Execute o seguinte comando para verificar se o banco de dados existe em seu cluster:

    show dbs
    sample_airbnb 55.3 MB
    sample_analytics 9.59 MB
    sample_geospatial 1.43 MB
    sample_guides 41 kB
    sample_mflix 51.1 MB
    sample_restaurants 6.95 MB
    sample_supplies 1.21 MB
    sample_training 55.5 MB
    sample_weatherdata 2.89 MB
    admin 348 kB
    local 2.1 GB
  2. Execute o seguinte comando para alternar para o banco de banco de dados sample_airbnb .

    use sample_airbnb
    switched to db sample_airbnb
3

Para criar uma visualização materializada, execute a seguinte query. A query especifica os seguintes estágios do pipeline de agregação:

  • $project: Nesse estágio, a query faz o seguinte:

    • Converte o objeto de data last_scraped em uma string no formato YYYY-MM-DD usando $dateToString.

    • Inclui campos de string name e property_type.

    • Converte o campo de número accomodates em uma string utilizando $toString.

    • Converte o campo de número maximum_nights em uma string utilizando $toString.

  • $merge: nesse estágio, a query grava os campos de saída do estágio $project em uma visualização materializada chamada airbnb_mat_view.

    db.listingsAndReviews.aggregate( [
    {
    $project: {
    lastScrapedDate: { $dateToString: { format: "%Y-%m-%d", date: "$last_scraped" } },
    propertyName: "$name",
    propertyType: "$property_type",
    accommodatesNumber: { $toString: "$accommodates" },
    maximumNumberOfNights: { $toString: "$maximum_nights" }
    }
    },
    { $merge: { into: "airbnb_mat_view", whenMatched: "replace" } }
    ] )
4

Para verificar, execute o seguinte comando:

db.airbnb_mat_view.findOne()
{
_id: '10006546',
lastScrapedDate: '2019-02-16',
propertyName: 'Ribeira Charming Duplex',
propertyType: 'House',
accommodatesNumber: '8',
maximumNumberOfNights: '30'
}

Nesta seção, você criará índices do Atlas Search nos campos lastScrapedDate, name, propertyType, accommodatesNumber e maximumNumberOfNights para executar queries nestes campos.

1
  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.

  3. Se ainda não estiver exibido, clique em Clusters na barra lateral.

    A página Clusters é exibida.

2

Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.

  1. Na barra lateral, clique em Atlas Search sob o título Services.

  2. No menu suspenso Select data source, selecione seu cluster e clique em Go to Atlas Search.

    A página Atlas Search é exibida.

  1. Clique no botão Browse Collections para o seu cluster.

  2. Expanda o banco de dados e selecione a coleção.

  3. Clique na guia Search Indexes da coleção.

    A página Atlas Search é exibida.

  1. Clique no nome do seu cluster.

  2. Clique na aba Atlas Search.

    A página Atlas Search é exibida.

3
4
  • Para uma experiência guiada, selecione Visual Editor.

  • Para editar a definição do índice, selecione JSON Editor.

5
  1. No campo Index Name, digite date-number-fields-tutorial.

    Se você nomear seu índice default, não precisará especificar um parâmetro index no estágio do pipeline $search . Se você der um nome personalizado ao seu índice, deverá especificar este nome no parâmetro index.

  2. Na seção Database and Collection, localize o banco de dados sample_airbnb e selecione a coleção airbnb_mat_view.

6

Você pode criar um dos seguintes índices:

  • Índice que usa mapeamentos dinâmicos para executar queries usando o operador queryString. Não é possível executar queries usando o operador autocomplete se a definição do índice usar apenas mapeamentos dinâmicos.

  • Índice que usa mapeamentos estáticos para executar queries usando o operador autocomplete. Não é possível executar queries usando o operador queryString em campos indexados como tipo autocomplete.

Você pode usar o Visual Editor ou o JSON Editor na interface do usuário do Atlas para criar o índice.

  1. Clique em Next.

  2. Clique em Create Search Index.

  1. Revise a definição do índice.

    A definição do seu índice deve ser semelhante a esta:

    {
    "mappings": {
    "dynamic": true
    }
    }
  2. Clique em Next.

  3. Clique em Create Search Index.

Você pode usar o Visual Editor ou o JSON Editor na interface do usuário do Atlas para criar o índice.

  1. Clique em Next

  2. Clique em Refine Your Index.

  3. Clique em Add Field na seção Field Mappings.

  4. Clique em Customized Configuration na janela Add Field Mapping.

  5. Selecione accommodatesNumber no menu suspenso Field Name.

  6. Clique no menu suspenso Data Type, selecione Autocomplete no menu suspenso e configure os seguintes campos:

    Nome do campo UI
    Configuração
    Max Grams
    <maximum number of characters to index per sequence, numeric value>
    Min Grams
    <minimum number of characters to index per sequence, numeric value.
    Tokenization
    edgeGram
    Fold Diacritics
    true

    valores muito baixos para Min Grams podem resultar em um índice muito grande.

  7. Clique em Add para adicionar o campo à tabela Field Mappings.

  8. Clique em Add Field na seção Field Mappings e repita as etapas d a f para definir as configurações dos seguintes campos:

    • lastScrapedDate

    • numberOfNights

  9. Clique em Save Changes.

  1. Substitua a definição de índice padrão pela seguinte definição de índice de exemplo.

    {
    "mappings": {
    "dynamic": false,
    "fields": {
    "accommodatesNumber": [
    {
    "dynamic": true,
    "type": "document"
    },
    {
    "minGrams": 1,
    "type": "autocomplete"
    }
    ],
    "lastScrapedDate": [
    {
    "dynamic": true,
    "type": "document"
    },
    {
    "type": "autocomplete"
    }
    ],
    "maximumNumberOfNights": [
    {
    "dynamic": true,
    "type": "document"
    },
    {
    "minGrams": 1,
    "type": "autocomplete"
    }
    ]
    }
    }
    }
  2. Clique em Next.

7

A janela modal You're All Set! é exibida para indicar que o Atlas Search está criando seu índice.

8

Você pode executar queries nos campos numéricos e de data que foram convertidos em cadeias de caracteres. Este tutorial usa os operadores queryString e autocomplete para pesquisar propriedades. A query utiliza os seguintes estágios de pipeline:

  • $search estágio para pesquisar a coleção.

  • Estágio $limit para limitar a saída a 5 resultados.

  • $project estágio a ser excluído _id

Nesta seção, você se conectará ao seu Atlas cluster e executará as queries de amostra usando o operador nos campos da coleção airbnb_mat_view .

Observação

Você não pode executar queries próximas ou de intervalo em relação aos campos de data e número que foram convertidos em cadeias de caracteres em sua exibição materializada.


➤ Use o menu suspenso Selecione seu idioma nesta página para definir o idioma dos exemplos nesta seção.


1

Abra o mongosh em uma janela do terminal e conecte ao seu cluster. Para obter instruções detalhadas sobre a conexão, consulte Conectar via mongosh.

2

Execute o seguinte comando no prompt mongosh:

use sample_airbnb
switched to db sample_airbnb
3

Se você criou um índice que usa mapeamentos dinâmicos, pode consultar a coleção airbnb_mat_view usando o operador queryString. Se você criou um índice que usa mapeamentos estáticos, pode consultar a coleção airbnb_mat_view usando o operador autocomplete.

A query a seguir pesquisa propriedades cujo tipo seja Apartment ou Condominium, acomoda 2 pessoas e foi listada em 2019.

db.airbnb_mat_view.aggregate([
{
"$search": {
"index": "date-number-fields-tutorial",
"queryString": {
"defaultPath": "propertyType",
"query": "propertyType: (Apartment OR Condominium) AND accommodatesNumber: 4 AND lastScrapedDate: 2019"
}
}
},
{ $limit: 5 },
{
$project: {
"_id": 0
}
}
])
1 [
2 {
3 lastScrapedDate: '2019-03-06',
4 propertyName: 'LAHAINA, MAUI! RESORT/CONDO BEACHFRONT!! SLEEPS 4!',
5 propertyType: 'Condominium',
6 accommodatesNumber: '4'
7 },
8 {
9 lastScrapedDate: '2019-03-06',
10 propertyName: 'Makaha Valley Paradise with OceanView',
11 propertyType: 'Condominium',
12 accommodatesNumber: '4'
13 },
14 {
15 lastScrapedDate: '2019-03-06',
16 propertyName: 'March 2019 availability! Oceanview on Sugar Beach!',
17 propertyType: 'Condominium',
18 accommodatesNumber: '4'
19 },
20 {
21 lastScrapedDate: '2019-03-06',
22 propertyName: 'Tropical Jungle Oasis',
23 propertyType: 'Condominium',
24 accommodatesNumber: '4'
25 },
26 {
27 lastScrapedDate: '2019-02-11',
28 propertyName: 'Hospede-se com acesso fácil.',
29 propertyType: 'Condominium',
30 accommodatesNumber: '4'
31 }
32 ]
33

A consulta a seguir pesquisa propriedades em que o tipo de propriedade é House, hospeda 2 pessoas, foi listado em 2019 ou permite a estada de até 30 dias.

db.airbnb_mat_view.aggregate([
{
"$search": {
"index": "date-number-fields-tutorial",
"queryString": {
"defaultPath": "propertyType",
"query": "propertyType: House OR accommodatesNumber: 2 OR lastScrapedDate: 2019 OR maximumNumberOfNights: 30"
}
}
},
{ $limit: 5 },
{
$project: {
"_id": 0
}
}
])
1 [
2 {
3 lastScrapedDate: '2019-02-11',
4 propertyName: '2017 , férias no Rio',
5 propertyType: 'House',
6 accommodatesNumber: '2',
7 maximumNumberOfNights: '30'
8 },
9 {
10 lastScrapedDate: '2019-03-07',
11 propertyName: 'Newly renovated home',
12 propertyType: 'House',
13 accommodatesNumber: '2',
14 maximumNumberOfNights: '30'
15 },
16 {
17 lastScrapedDate: '2019-02-18',
18 propertyName: 'Vintage House For Rent',
19 propertyType: 'House',
20 accommodatesNumber: '2',
21 maximumNumberOfNights: '30'
22 },
23 {
24 lastScrapedDate: '2019-02-18',
25 propertyName: '4floor house in Taksim,Taksimde 4katli müstakil ev',
26 propertyType: 'House',
27 accommodatesNumber: '2',
28 maximumNumberOfNights: '30'
29 },
30 {
31 lastScrapedDate: '2019-02-16',
32 propertyName: '22 Oporto Guesthouse Cordoaria',
33 propertyType: 'House',
34 accommodatesNumber: '2',
35 maximumNumberOfNights: '30'
36 }
37

A query a seguir pesquisa propriedades listadas em algum momento começando com 2 e permite a permanência do número de noites começando com 1.

db.airbnb_mat_view.aggregate([
{
"$search": {
"index": "date-number-fields-tutorial",
"compound": {
"should": [{
"autocomplete": {
"path": "lastScrapedDate",
"query": "2"
}
},
{
"autocomplete": {
"path": "maximumNumberOfNights",
"query": "1"
}
}]
}
}
},
{ $limit: 5 },
{
$project: {
"_id": 0
}
}
])
[
{
lastScrapedDate: '2019-02-11',
propertyName: 'Horto flat with small garden',
propertyType: 'Apartment',
accommodatesNumber: '4',
maximumNumberOfNights: '1125'
},
{
lastScrapedDate: '2019-03-06',
propertyName: 'Private Room in Bushwick',
propertyType: 'Apartment',
accommodatesNumber: '1',
maximumNumberOfNights: '1125'
},
{
lastScrapedDate: '2019-02-11',
propertyName: 'Apt Linda Vista Lagoa - Rio',
propertyType: 'Apartment',
accommodatesNumber: '2',
maximumNumberOfNights: '1125'
},
{
lastScrapedDate: '2019-02-18',
propertyName: 'Charming Flat in Downtown Moda',
propertyType: 'House',
accommodatesNumber: '6',
maximumNumberOfNights: '1125'
},
{
lastScrapedDate: '2019-02-11',
propertyName: "Catete's Colonial Big Hause Room B",
propertyType: 'House',
accommodatesNumber: '8',
maximumNumberOfNights: '1125'
}
]

A query a seguir pesquisa propriedades que podem permitir a permanência do número de noites começando com 3 e acomodar o número de pessoas começando com 2.

db.airbnb_mat_view.aggregate([
{
"$search": {
"index": "date-number-fields-tutorial",
"compound": {
"should": [{
"autocomplete": {
"path": "maximumNumberOfNights",
"query": "3"
}
},
{
"autocomplete": {
"path": "accommodatesNumber",
"query": "2"
}
}]
}
}
},
{ $limit: 5 },
{
$project: {
"_id": 0
}
}
])
[
{
lastScrapedDate: '2019-03-06',
propertyName: 'Ocean View Waikiki Marina w/prkg',
propertyType: 'Condominium',
accommodatesNumber: '2',
maximumNumberOfNights: '365'
},
{
lastScrapedDate: '2019-03-07',
propertyName: 'New York City - Upper West Side Apt',
propertyType: 'Apartment',
accommodatesNumber: '2',
maximumNumberOfNights: '360'
},
{
lastScrapedDate: '2019-03-07',
propertyName: 'Sydney Hyde Park City Apartment (checkin from 6am)',
propertyType: 'Apartment',
accommodatesNumber: '2',
maximumNumberOfNights: '30'
},
{
lastScrapedDate: '2019-03-07',
propertyName: 'Private Room (2) in Guest House at Coogee Beach',
propertyType: 'House',
accommodatesNumber: '2',
maximumNumberOfNights: '365'
},
{
lastScrapedDate: '2019-03-06',
propertyName: '~Ao Lele~ Flying Cloud',
propertyType: 'Treehouse',
accommodatesNumber: '2',
maximumNumberOfNights: '30'
}
]
1

Abra o MongoDB Compass e conecte-se ao cluster. Para obter instruções detalhadas sobre a conexão, consulte Conectar via Compass.

2

Na tela Database, clique no banco de dados sample_airbnb e, em seguida, clique na coleção airbnb_mat_view.

3

Se você criou um índice que usa mapeamentos dinâmicos, pode consultar a coleção airbnb_mat_view usando o operador queryString. Se você criou um índice que usa mapeamentos estáticos, pode consultar a coleção airbnb_mat_view usando o operador autocomplete.

A query a seguir pesquisa propriedades cujo tipo seja Apartment ou Condominium, acomoda 2 pessoas e foi listada em 2019.

estágio do pipeline
Query
$search
{
"index": "date-number-fields-tutorial",
"queryString": {
"defaultPath": "propertyType",
"query": "propertyType: House OR accommodatesNumber: 2 OR lastScrapedDate: 2019 OR maximumNumberOfNights: 30"
}
}
$limit
{
5
}
$project
{
"_id": 0
}

Se você habilitou o Auto Preview, o MongoDB Compass exibe os seguintes documentos ao lado da etapa de pipeline do $project:

1 [
2 {
3 lastScrapedDate: '2019-03-06',
4 propertyName: 'LAHAINA, MAUI! RESORT/CONDO BEACHFRONT!! SLEEPS 4!',
5 propertyType: 'Condominium',
6 accommodatesNumber: '4'
7 },
8 {
9 lastScrapedDate: '2019-03-06',
10 propertyName: 'Makaha Valley Paradise with OceanView',
11 propertyType: 'Condominium',
12 accommodatesNumber: '4'
13 },
14 {
15 lastScrapedDate: '2019-03-06',
16 propertyName: 'March 2019 availability! Oceanview on Sugar Beach!',
17 propertyType: 'Condominium',
18 accommodatesNumber: '4'
19 },
20 {
21 lastScrapedDate: '2019-03-06',
22 propertyName: 'Tropical Jungle Oasis',
23 propertyType: 'Condominium',
24 accommodatesNumber: '4'
25 },
26 {
27 lastScrapedDate: '2019-02-11',
28 propertyName: 'Hospede-se com acesso fácil.',
29 propertyType: 'Condominium',
30 accommodatesNumber: '4'
31 }
32 ]
33

A consulta a seguir pesquisa propriedades em que o tipo de propriedade é House, hospeda 2 pessoas, foi listado em 2019 ou permite a estada de até 30 dias.

estágio do pipeline
Query
$search
{
"index": "date-number-fields-tutorial",
"queryString": {
"defaultPath": "propertyType",
"query": "propertyType: House OR accommodatesNumber: 2 OR lastScrapedDate: 2019 OR maximumNumberOfNights: 30"
}
}
$limit
{
5
}
$project
{
"_id": 0
}

Se você habilitou o Auto Preview, o MongoDB Compass exibe os seguintes documentos ao lado da etapa de pipeline do $project:

1 [
2 {
3 lastScrapedDate: '2019-02-11',
4 propertyName: '2017 , férias no Rio',
5 propertyType: 'House',
6 accommodatesNumber: '2',
7 maximumNumberOfNights: '30'
8 },
9 {
10 lastScrapedDate: '2019-03-07',
11 propertyName: 'Newly renovated home',
12 propertyType: 'House',
13 accommodatesNumber: '2',
14 maximumNumberOfNights: '30'
15 },
16 {
17 lastScrapedDate: '2019-02-18',
18 propertyName: 'Vintage House For Rent',
19 propertyType: 'House',
20 accommodatesNumber: '2',
21 maximumNumberOfNights: '30'
22 },
23 {
24 lastScrapedDate: '2019-02-18',
25 propertyName: '4floor house in Taksim,Taksimde 4katli müstakil ev',
26 propertyType: 'House',
27 accommodatesNumber: '2',
28 maximumNumberOfNights: '30'
29 },
30 {
31 lastScrapedDate: '2019-02-16',
32 propertyName: '22 Oporto Guesthouse Cordoaria',
33 propertyType: 'House',
34 accommodatesNumber: '2',
35 maximumNumberOfNights: '30'
36 }
37

A query a seguir pesquisa propriedades listadas em algum momento começando com 2 e permite a permanência do número de noites começando com 1.

estágio do pipeline
Query
$search
{
"index": "date-number-fields-tutorial",
"compound": {
"should": [{
"autocomplete": {
"path": "lastScrapedDate",
"query": "2"
}
},
{
"autocomplete": {
"path": "maximumNumberOfNights",
"query": "1"
}
}]
}
}
$limit
{
5
}
$project
{
"_id": 0
}

Se você habilitou o Auto Preview, o MongoDB Compass exibe os seguintes documentos ao lado da etapa de pipeline do $project:

1 [
2 {
3 lastScrapedDate: '2019-02-11',
4 propertyName: 'Horto flat with small garden',
5 propertyType: 'Apartment',
6 accommodatesNumber: '4',
7 maximumNumberOfNights: '1125'
8 },
9 {
10 lastScrapedDate: '2019-03-06',
11 propertyName: 'Private Room in Bushwick',
12 propertyType: 'Apartment',
13 accommodatesNumber: '1',
14 maximumNumberOfNights: '1125'
15 },
16 {
17 lastScrapedDate: '2019-02-11',
18 propertyName: 'Apt Linda Vista Lagoa - Rio',
19 propertyType: 'Apartment',
20 accommodatesNumber: '2',
21 maximumNumberOfNights: '1125'
22 },
23 {
24 lastScrapedDate: '2019-02-18',
25 propertyName: 'Charming Flat in Downtown Moda',
26 propertyType: 'House',
27 accommodatesNumber: '6',
28 maximumNumberOfNights: '1125'
29 },
30 {
31 lastScrapedDate: '2019-02-11',
32 propertyName: "Catete's Colonial Big Hause Room B",
33 propertyType: 'House',
34 accommodatesNumber: '8',
35 maximumNumberOfNights: '1125'
36 }
37 ]

A query a seguir pesquisa propriedades que podem permitir a permanência do número de noites começando com 3 e acomodar o número de pessoas começando com 2.

estágio do pipeline
Query
$search
{
"index": "date-number-fields-tutorial",
"compound": {
"should": [{
"autocomplete": {
"path": "maximumNumberOfNights",
"query": "3"
}
},
{
"autocomplete": {
"path": "accommodatesNumber",
"query": "2"
}
}]
}
}
$limit
{
5
}
$project
{
"_id": 0
}

Se você habilitou o Auto Preview, o MongoDB Compass exibe os seguintes documentos ao lado da etapa de pipeline do $project:

1[
2 {
3 lastScrapedDate: '2019-03-06',
4 propertyName: 'Ocean View Waikiki Marina w/prkg',
5 propertyType: 'Condominium',
6 accommodatesNumber: '2',
7 maximumNumberOfNights: '365'
8 },
9 {
10 lastScrapedDate: '2019-03-07',
11 propertyName: 'New York City - Upper West Side Apt',
12 propertyType: 'Apartment',
13 accommodatesNumber: '2',
14 maximumNumberOfNights: '360'
15 },
16 {
17 lastScrapedDate: '2019-03-07',
18 propertyName: 'Sydney Hyde Park City Apartment (checkin from 6am)',
19 propertyType: 'Apartment',
20 accommodatesNumber: '2',
21 maximumNumberOfNights: '30'
22 },
23 {
24 lastScrapedDate: '2019-03-07',
25 propertyName: 'Private Room (2) in Guest House at Coogee Beach',
26 propertyType: 'House',
27 accommodatesNumber: '2',
28 maximumNumberOfNights: '365'
29 },
30 {
31 lastScrapedDate: '2019-03-06',
32 propertyName: '~Ao Lele~ Flying Cloud',
33 propertyType: 'Treehouse',
34 accommodatesNumber: '2',
35 maximumNumberOfNights: '30'
36 }
37]
1
mkdir date-number-to-string-query
cd date-number-to-string-query
dotnet new console
2
dotnet add package MongoDB.Driver
3

Se você criou um índice que usa mapeamentos dinâmicos, pode consultar a coleção airbnb_mat_view usando o operador queryString. Se você criou um índice que usa mapeamentos estáticos, pode consultar a coleção airbnb_mat_view usando o operador autocomplete.

O exemplo de código executa as seguintes tarefas:

  • Importa pacotes e dependências do mongodb .

  • Estabelece uma ligação ao seu cluster Atlas.

  • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

A query a seguir pesquisa propriedades cujo tipo seja Apartment ou Condominium, acomoda 2 pessoas e foi listada em 2019.

1using MongoDB.Bson;
2using MongoDB.Bson.Serialization.Attributes;
3using MongoDB.Bson.Serialization.Conventions;
4using MongoDB.Driver;
5using MongoDB.Driver.Search;
6
7public class DateNumberToStringQuery
8{
9 private const string MongoConnectionString = "<connection-string>";
10
11 public static void Main(string[] args)
12 {
13 // allow automapping of the camelCase database fields to our MovieDocument
14 var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() };
15 ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true);
16
17 // connect to your Atlas cluster
18 var mongoClient = new MongoClient(MongoConnectionString);
19 var airbnbDatabase = mongoClient.GetDatabase("sample_airbnb");
20 var matViewCollection = airbnbDatabase.GetCollection<matViewDocument>("airbnb_mat_view");
21
22 // define and run pipeline
23 var results = matViewCollection.Aggregate()
24 .Search(Builders<matViewDocument>.Search.QueryString(
25 airbnb => airbnb.propertyType,
26 "(Apartment OR Condominium) AND accommodatesNumber: 4 AND lastScrapedDate: 2019"
27 ),
28 indexName: "date-number-fields-tutorial")
29 .Limit(5)
30 .Project<matViewDocument>(Builders<matViewDocument>.Projection
31 .Exclude(airbnb => airbnb.Id))
32 .ToList();
33
34 // print results
35 foreach (var airbnb in results)
36 {
37 Console.WriteLine(airbnb.ToJson());
38 }
39 }
40}
41
42[BsonIgnoreExtraElements]
43public class matViewDocument
44{
45 [BsonIgnoreIfDefault]
46 public string Id { get; set; }
47 public string lastScrapedDate { get; set; }
48 public string propertyName { get; set; }
49 public string propertyType { get; set; }
50 public string accommodatesNumber { get; set; }
51 public string maximumNumberOfNights { get; set; }
52}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

A consulta a seguir pesquisa propriedades em que o tipo de propriedade é House, hospeda 2 pessoas, foi listado em 2019 ou permite a estada de até 30 dias.

1using MongoDB.Bson;
2using MongoDB.Bson.Serialization.Attributes;
3using MongoDB.Bson.Serialization.Conventions;
4using MongoDB.Driver;
5using MongoDB.Driver.Search;
6
7public class DateNumberToStringQuery
8{
9 private const string MongoConnectionString = "<connection-string>";
10
11 public static void Main(string[] args)
12 {
13 // allow automapping of the camelCase database fields to our MovieDocument
14 var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() };
15 var ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true);
16
17 // connect to your Atlas cluster
18 var mongoClient = new MongoClient(MongoConnectionString);
19 var airbnbDatabase = mongoClient.GetDatabase("sample_airbnb");
20 var matViewCollection = airbnbDatabase.GetCollection<matViewDocument>("airbnb_mat_view");
21
22 // define and run pipeline
23 var results = matViewCollection.Aggregate()
24 .Search(Builders<matViewDocument>.Search.QueryString(
25 airbnb => airbnb.propertyType,
26 "House OR accommodatesNumber: 2 OR lastScrapedDate: 2019 OR maximumNumberOfNights: 30"
27 ),
28 indexName: "date-number-fields-tutorial")
29 .Limit(5)
30 .Project<matViewDocument>(Builders<matViewDocument>.Projection
31 .Exclude(airbnb => airbnb.Id))
32 .ToList();
33
34 // print results
35 foreach (var airbnb in results)
36 {
37 Console.WriteLine(airbnb.ToJson());
38 }
39 }
40}
41
42[BsonIgnoreExtraElements]
43public class matViewDocument
44{
45 [BsonIgnoreIfDefault]
46 public string Id { get; set; }
47 public string lastScrapedDate { get; set; }
48 public string propertyName { get; set; }
49 public string propertyType { get; set; }
50 public string accommodatesNumber { get; set; }
51 public string maximumNumberOfNights { get; set; }
52}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

O exemplo de código executa as seguintes tarefas:

  • Importa pacotes e dependências do mongodb .

  • Estabelece uma ligação ao seu cluster Atlas.

  • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

A query a seguir pesquisa propriedades listadas em algum momento começando com 2 e permite a permanência do número de noites começando com 1.

1using MongoDB.Bson;
2using MongoDB.Bson.Serialization.Attributes;
3using MongoDB.Bson.Serialization.Conventions;
4using MongoDB.Driver;
5using MongoDB.Driver.Search;
6
7public class DateNumberToStringQuery
8{
9 private const string MongoConnectionString = "<connection-string>";
10
11 public static void Main(string[] args)
12 {
13 // allow automapping of the camelCase database fields to our MovieDocument
14 var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() };
15 ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true);
16
17 // connect to your Atlas cluster
18 var mongoClient = new MongoClient(MongoConnectionString);
19 var airbnbDatabase = mongoClient.GetDatabase("sample_airbnb");
20 var matViewCollection = airbnbDatabase.GetCollection<matViewDocument>("airbnb_mat_view");
21
22 // define and run pipeline
23 var results = matViewCollection.Aggregate()
24 .Search(Builders<matViewDocument>.Search.Compound()
25 .Should(Builders<matViewDocument>.Search.Autocomplete(airbnb => airbnb.lastScrapedDate, "2"))
26 .Should(Builders<matViewDocument>.Search.Autocomplete(airbnb => airbnb.maximumNumberOfNights, "1")),
27 indexName: "date-number-fields-tutorial")
28 .Limit(5)
29 .Project<matViewDocument>(Builders<matViewDocument>.Projection
30 .Exclude(airbnb => airbnb.Id))
31 .ToList();
32
33 // print results
34 foreach (var airbnb in results)
35 {
36 Console.WriteLine(airbnb.ToJson());
37 }
38 }
39}
40
41[BsonIgnoreExtraElements]
42public class matViewDocument
43{
44 [BsonIgnoreIfDefault]
45 public string Id { get; set; }
46 public string lastScrapedDate { get; set; }
47 public string propertyName { get; set; }
48 public string propertyType { get; set; }
49 public string accommodatesNumber { get; set; }
50 public string maximumNumberOfNights { get; set; }
51}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

A query a seguir pesquisa propriedades que podem permitir a permanência do número de noites começando com 3 e acomodar o número de pessoas começando com 2.

1using MongoDB.Bson;
2using MongoDB.Bson.Serialization.Attributes;
3using MongoDB.Bson.Serialization.Conventions;
4using MongoDB.Driver;
5using MongoDB.Driver.Search;
6
7public class DateNumberToStringQuery
8{
9 private const string MongoConnectionString = "<connection-string>";
10
11 public static void Main(string[] args)
12 {
13 // allow automapping of the camelCase database fields to our MovieDocument
14 var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() };
15 ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true);
16
17 // connect to your Atlas cluster
18 var mongoClient = new MongoClient(MongoConnectionString);
19 var airbnbDatabase = mongoClient.GetDatabase("sample_airbnb");
20 var matViewCollection = airbnbDatabase.GetCollection<matViewDocument>("airbnb_mat_view");
21
22 // define and run pipeline
23 var results = matViewCollection.Aggregate()
24 .Search(Builders<matViewDocument>.Search.Compound()
25 .Should(Builders<matViewDocument>.Search.Autocomplete(airbnb => airbnb.maximumNumberOfNights, "3"))
26 .Should(Builders<matViewDocument>.Search.Autocomplete(airbnb => airbnb.accommodatesNumber, "2")),
27 indexName: "date-number-fields-tutorial")
28 .Limit(5)
29 .Project<matViewDocument>(Builders<matViewDocument>.Projection
30 .Exclude(airbnb => airbnb.Id))
31 .ToList();
32
33 // print results
34 foreach (var airbnb in results)
35 {
36 Console.WriteLine(airbnb.ToJson());
37 }
38 }
39}
40
41[BsonIgnoreExtraElements]
42public class matViewDocument
43{
44 [BsonIgnoreIfDefault]
45 public string Id { get; set; }
46 public string lastScrapedDate { get; set; }
47 public string propertyName { get; set; }
48 public string propertyType { get; set; }
49 public string accommodatesNumber { get; set; }
50 public string maximumNumberOfNights { get; set; }
51}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

4
dotnet run Program.cs
1{
2 "lastScrapedDate": "2019-03-06",
3 "propertyName": "LAHAINA, MAUI! RESORT/CONDO BEACHFRONT!! SLEEPS 4!",
4 "propertyType": "Condominium",
5 "accommodatesNumber": "4",
6 "maximumNumberOfNights": "1125"
7}
8{
9 "lastScrapedDate": "2019-03-06",
10 "propertyName": "Makaha Valley Paradise with OceanView",
11 "propertyType": "Condominium",
12 "accommodatesNumber": "4",
13 "maximumNumberOfNights": "180"
14}
15{
16 "lastScrapedDate": "2019-03-06",
17 "propertyName": "March 2019 availability! Oceanview on Sugar Beach!",
18 "propertyType": "Condominium",
19 "accommodatesNumber": "4",
20 "maximumNumberOfNights": "1125"
21}
22{
23 "lastScrapedDate": "2019-03-06",
24 "propertyName": "Tropical Jungle Oasis",
25 "propertyType": "Condominium",
26 "accommodatesNumber": "4",
27 "maximumNumberOfNights": "1125"
28}
29{
30 "lastScrapedDate": "2019-02-11",
31 "propertyName": "Hospede-se com acesso fácil.",
32 "propertyType": "Condominium",
33 "accommodatesNumber": "4",
34 "maximumNumberOfNights": "1125"
35}
dotnet run Program.cs
1{
2 "lastScrapedDate": "2019-02-11",
3 "propertyName": "2017 , férias no Rio",
4 "propertyType": "House",
5 "accommodatesNumber": "2",
6 "maximumNumberOfNights": "30"
7}
8{
9 "lastScrapedDate": "2019-03-07",
10 "propertyName": "Newly renovated home",
11 "propertyType": "House",
12 "accommodatesNumber": "2",
13 "maximumNumberOfNights": "30"
14}
15{
16 "lastScrapedDate": "2019-02-18",
17 "propertyName": "Vintage House For Rent",
18 "propertyType": "House",
19 "accommodatesNumber": "2",
20 "maximumNumberOfNights": "30"
21}
22{
23 "lastScrapedDate": "2019-02-18",
24 "propertyName": "4floor house in Taksim,Taksimde 4katli müstakil ev",
25 "propertyType": "House",
26 "accommodatesNumber": "2",
27 "maximumNumberOfNights": "30"
28}
29{
30 "lastScrapedDate": "2019-02-16",
31 "propertyName": "22 Oporto Guesthouse Cordoaria",
32 "propertyType": "House",
33 "accommodatesNumber": "2",
34 "maximumNumberOfNights": "30"
35}
dotnet run Program.cs
1{
2 "lastScrapedDate": "2019-02-11",
3 "propertyName": "Horto flat with small garden",
4 "propertyType": "Apartment",
5 "accommodatesNumber": "4",
6 "maximumNumberOfNights": "1125"
7}
8{
9 "lastScrapedDate": "2019-03-06",
10 "propertyName": "Private Room in Bushwick",
11 "propertyType": "Apartment",
12 "accommodatesNumber": "1",
13 "maximumNumberOfNights": "1125"
14}
15{
16 "lastScrapedDate": "2019-02-11",
17 "propertyName": "Apt Linda Vista Lagoa - Rio",
18 "propertyType": "Apartment",
19 "accommodatesNumber": "2",
20 "maximumNumberOfNights": "1125"
21}
22{
23 "lastScrapedDate": "2019-02-18",
24 "propertyName": "Charming Flat in Downtown Moda",
25 "propertyType": "House",
26 "accommodatesNumber": "6",
27 "maximumNumberOfNights": "1125"
28}
29{
30 "lastScrapedDate": "2019-02-11",
31 "propertyName": "Catete's Colonial Big Hause Room B",
32 "propertyType": "House",
33 "accommodatesNumber": "8",
34 "maximumNumberOfNights": "1125"
35}
dotnet run Program.cs
1{
2 "lastScrapedDate": "2019-03-06",
3 "propertyName": "Ocean View Waikiki Marina w/prkg",
4 "propertyType": "Condominium",
5 "accommodatesNumber": "2",
6 "maximumNumberOfNights": "365"
7}
8{
9 "lastScrapedDate": "2019-03-07",
10 "propertyName": "New York City - Upper West Side Apt",
11 "propertyType": "Apartment",
12 "accommodatesNumber": "2",
13 "maximumNumberOfNights": "360"
14}
15{
16 "lastScrapedDate": "2019-03-07",
17 "propertyName": "Sydney Hyde Park City Apartment (checkin from 6am)",
18 "propertyType": "Apartment",
19 "accommodatesNumber": "2",
20 "maximumNumberOfNights": "30"
21}
22{
23 "lastScrapedDate": "2019-03-07",
24 "propertyName": "Private Room (2) in Guest House at Coogee Beach",
25 "propertyType": "House",
26 "accommodatesNumber": "2",
27 "maximumNumberOfNights": "365"
28}
29{
30 "lastScrapedDate": "2019-03-06",
31 "propertyName": "~Ao Lele~ Flying Cloud",
32 "propertyType": "Treehouse",
33 "accommodatesNumber": "2",
34 "maximumNumberOfNights": "30"
35}
1
2

Se você criou um índice que usa mapeamentos dinâmicos, pode consultar a coleção airbnb_mat_view usando o operador queryString. Se você criou um índice que usa mapeamentos estáticos, pode consultar a coleção airbnb_mat_view usando o operador autocomplete.

A query a seguir pesquisa propriedades cujo tipo seja Apartment ou Condominium, acomoda 2 pessoas e foi listada em 2019.

1package main
2
3import (
4 "context"
5 "fmt"
6 "time"
7
8 "go.mongodb.org/mongo-driver/bson"
9 "go.mongodb.org/mongo-driver/mongo"
10 "go.mongodb.org/mongo-driver/mongo/options"
11)
12
13func main() {
14 var err error
15 // connect to the Atlas cluster
16 ctx := context.Background()
17 client, err := mongo.Connect(ctx, options.Client().ApplyURI("<connection-string>"))
18 if err != nil {
19 panic(err)
20 }
21 defer client.Disconnect(ctx)
22 // set namespace
23 collection := client.Database("sample_airbnb").Collection("airbnb_mat_view")
24 // define pipeline
25 searchStage := bson.D{{"$search", bson.D{
26 {"index", "date-number-fields-tutorial"},
27 {"queryString", bson.D{
28 {"defaultPath", "propertyType"},
29 {"query", "propertyType: (Apartment OR Condominium) AND accommodatesNumber: 4 AND lastScrapedDate: 2019"},
30 }}}}}
31 limitStage := bson.D{{"$limit", 5}}
32 projectStage := bson.D{{"$project", bson.D{{"_id", 0}}}}
33 // specify the amount of time the operation can run on the server
34 opts := options.Aggregate().SetMaxTime(5 * time.Second)
35 // run pipeline
36 cursor, err := collection.Aggregate(ctx, mongo.Pipeline{searchStage, limitStage, projectStage}, opts)
37 if err != nil {
38 panic(err)
39 }
40 // print results
41 var results []bson.D
42 if err = cursor.All(context.TODO(), &results); err != nil {
43 panic(err)
44 }
45 for _, result := range results {
46 fmt.Println(result)
47 }
48}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

A consulta a seguir pesquisa propriedades em que o tipo de propriedade é House, hospeda 2 pessoas, foi listado em 2019 ou permite a estada de até 30 dias.

1package main
2
3import (
4 "context"
5 "fmt"
6 "time"
7
8 "go.mongodb.org/mongo-driver/bson"
9 "go.mongodb.org/mongo-driver/mongo"
10 "go.mongodb.org/mongo-driver/mongo/options"
11)
12
13func main() {
14 var err error
15 // connect to the Atlas cluster
16 ctx := context.Background()
17 client, err := mongo.Connect(ctx, options.Client().ApplyURI("<connection-string>"))
18 if err != nil {
19 panic(err)
20 }
21 defer client.Disconnect(ctx)
22 // set namespace
23 collection := client.Database("sample_airbnb").Collection("airbnb_mat_view")
24 // define pipeline
25 searchStage := bson.D{{"$search", bson.D{
26 {"index", "date-number-fields-tutorial"},
27 {"queryString", bson.D{
28 {"defaultPath", "propertyType"},
29 {"query", "propertyType: House OR accommodatesNumber: 2 OR lastScrapedDate: 2019 OR maximumNumberOfNights: 30"},
30 }}}}}
31 limitStage := bson.D{{"$limit", 5}}
32 projectStage := bson.D{{"$project", bson.D{{"_id", 0}}}}
33 // specify the amount of time the operation can run on the server
34 opts := options.Aggregate().SetMaxTime(5 * time.Second)
35 // run pipeline
36 cursor, err := collection.Aggregate(ctx, mongo.Pipeline{searchStage, limitStage, projectStage}, opts)
37 if err != nil {
38 panic(err)
39 }
40 // print results
41 var results []bson.D
42 if err = cursor.All(context.TODO(), &results); err != nil {
43 panic(err)
44 }
45 for _, result := range results {
46 fmt.Println(result)
47 }
48}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

A query a seguir pesquisa propriedades listadas em algum momento começando com 2 e permite a permanência do número de noites começando com 1.

1package main
2
3import (
4 "context"
5 "fmt"
6 "time"
7
8 "go.mongodb.org/mongo-driver/bson"
9 "go.mongodb.org/mongo-driver/mongo"
10 "go.mongodb.org/mongo-driver/mongo/options"
11)
12
13// define structure of movies collection
14type MovieCollection struct {
15 title string `bson:"Title,omitempty"`
16}
17
18func main() {
19 var err error
20 // connect to the Atlas cluster
21 ctx := context.Background()
22 client, err := mongo.Connect(ctx, options.Client().ApplyURI("<connection-tring>"))
23 if err != nil {
24 panic(err)
25 }
26 defer client.Disconnect(ctx)
27 // set namespace
28 collection := client.Database("sample_airbnb").Collection("airbnb_mat_view")
29 // define pipeline
30 searchStage := bson.D{{"$search", bson.M{
31 "index": "date-number-fields-tutorial",
32 "compound": bson.M{
33 "should": bson.A{
34 bson.M{
35 "autocomplete": bson.M{
36 "path": "lastScrapedDate", "query": "2",
37 },
38 },
39 bson.M{
40 "autocomplete": bson.M{
41 "path": "maximumNumberOfNights", "query": "1",
42 },
43 },
44 },
45 },
46 }}}
47 limitStage := bson.D{{"$limit", 5}}
48 projectStage := bson.D{{"$project", bson.D{{"_id", 0}}}}
49 // specify the amount of time the operation can run on the server
50 opts := options.Aggregate().SetMaxTime(5 * time.Second)
51 // run pipeline
52 cursor, err := collection.Aggregate(ctx, mongo.Pipeline{searchStage, limitStage, projectStage}, opts)
53 if err != nil {
54 panic(err)
55 }
56 // print results
57 var results []bson.D
58 if err = cursor.All(context.TODO(), &results); err != nil {
59 panic(err)
60 }
61 for _, result := range results {
62 fmt.Println(result)
63 }
64}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

A query a seguir pesquisa propriedades que podem permitir a permanência do número de noites começando com 3 e acomodar o número de pessoas começando com 2.

1package main
2
3import (
4 "context"
5 "fmt"
6 "time"
7
8 "go.mongodb.org/mongo-driver/bson"
9 "go.mongodb.org/mongo-driver/mongo"
10 "go.mongodb.org/mongo-driver/mongo/options"
11)
12
13// define structure of movies collection
14type MovieCollection struct {
15 title string `bson:"Title,omitempty"`
16}
17
18func main() {
19 var err error
20 // connect to the Atlas cluster
21 ctx := context.Background()
22 client, err := mongo.Connect(ctx, options.Client().ApplyURI("<connection-string>"))
23 if err != nil {
24 panic(err)
25 }
26 defer client.Disconnect(ctx)
27 // set namespace
28 collection := client.Database("sample_airbnb").Collection("airbnb_mat_view")
29 // define pipeline
30 searchStage := bson.D{{"$search", bson.M{
31 "index": "date-number-fields-tutorial",
32 "compound": bson.M{
33 "should": bson.A{
34 bson.M{
35 "autocomplete": bson.M{
36 "path": "maximumNumberOfNights", "query": "3",
37 },
38 },
39 bson.M{
40 "autocomplete": bson.M{
41 "path": "accommodatesNumber", "query": "2",
42 },
43 },
44 },
45 },
46 }}}
47 limitStage := bson.D{{"$limit", 5}}
48 projectStage := bson.D{{"$project", bson.D{{"_id", 0}}}}
49 // specify the amount of time the operation can run on the server
50 opts := options.Aggregate().SetMaxTime(5 * time.Second)
51 // run pipeline
52 cursor, err := collection.Aggregate(ctx, mongo.Pipeline{searchStage, limitStage, projectStage}, opts)
53 if err != nil {
54 panic(err)
55 }
56 // print results
57 var results []bson.D
58 if err = cursor.All(context.TODO(), &results); err != nil {
59 panic(err)
60 }
61 for _, result := range results {
62 fmt.Println(result)
63 }
64}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

3
go run date-number-to-string-query.go
1[
2 {lastScrapedDate 2019-03-06}
3 {propertyName LAHAINA, MAUI! RESORT/CONDO BEACHFRONT!! SLEEPS 4!}
4 {propertyType Condominium}
5 {accommodatesNumber 4}
6 {maximumNumberOfNights 1125}
7]
8[
9 {lastScrapedDate 2019-03-06}
10 {propertyName Makaha Valley Paradise with OceanView}
11 {propertyType Condominium}
12 {accommodatesNumber 4}
13 {maximumNumberOfNights 180}
14]
15[
16 {lastScrapedDate 2019-03-06}
17 {propertyName March 2019 availability! Oceanview on Sugar Beach!}
18 {propertyType Condominium}
19 {accommodatesNumber 4}
20 {maximumNumberOfNights 1125}
21]
22[
23 {lastScrapedDate 2019-03-06}
24 {propertyName Tropical Jungle Oasis}
25 {propertyType Condominium}
26 {accommodatesNumber 4}
27 {maximumNumberOfNights 1125}
28]
29[
30 {lastScrapedDate 2019-02-11}
31 {propertyName Hospede-se com acesso fácil.}
32 {propertyType Condominium}
33 {accommodatesNumber 4}
34 {maximumNumberOfNights 1125}
35]
go run date-number-to-string-query.go
1[
2 {lastScrapedDate 2019-02-11}
3 {propertyName 2017 , férias no Rio}
4 {propertyType House}
5 {accommodatesNumber 2}
6 {maximumNumberOfNights 30}
7]
8[
9 {lastScrapedDate 2019-03-07}
10 {propertyName Newly renovated home}
11 {propertyType House}
12 {accommodatesNumber 2}
13 {maximumNumberOfNights 30}
14]
15[
16 {lastScrapedDate 2019-02-18}
17 {propertyName Vintage House For Rent}
18 {propertyType House}
19 {accommodatesNumber 2}
20 {maximumNumberOfNights 30}
21]
22[
23 {lastScrapedDate 2019-02-18}
24 {propertyName 4floor house in Taksim,Taksimde 4katli müstakil ev}
25 {propertyType House}
26 {accommodatesNumber 2}
27 {maximumNumberOfNights 30}
28]
29[
30 {lastScrapedDate 2019-02-16}
31 {propertyName 22 Oporto Guesthouse Cordoaria}
32 {propertyType House}
33 {accommodatesNumber 2}
34 {maximumNumberOfNights 30}
35]
go run date-number-to-string-query.go
1[
2 {lastScrapedDate 2019-02-11}
3 {propertyName Horto flat with small garden}
4 {propertyType Apartment}
5 {accommodatesNumber 4}
6 {maximumNumberOfNights 1125}
7]
8[
9 {lastScrapedDate 2019-03-06}
10 {propertyName Private Room in Bushwick}
11 {propertyType Apartment}
12 {accommodatesNumber 1}
13 {maximumNumberOfNights 1125}
14]
15[
16 {lastScrapedDate 2019-02-11}
17 {propertyName Apt Linda Vista Lagoa - Rio}
18 {propertyType Apartment}
19 {accommodatesNumber 2}
20 {maximumNumberOfNights 1125}
21]
22[
23 {lastScrapedDate 2019-02-18}
24 {propertyName Charming Flat in Downtown Moda}
25 {propertyType House}
26 {accommodatesNumber 6}
27 {maximumNumberOfNights 1125}
28]
29[
30 {lastScrapedDate 2019-02-11}
31 {propertyName Catete's Colonial Big Hause Room B}
32 {propertyType House}
33 {accommodatesNumber 8}
34 {maximumNumberOfNights 1125}
35]
go run date-number-to-string-query.go
1[
2 {lastScrapedDate 2019-03-06}
3 {propertyName Ocean View Waikiki Marina w/prkg}
4 {propertyType Condominium}
5 {accommodatesNumber 2}
6 {maximumNumberOfNights 365}
7]
8[
9 {lastScrapedDate 2019-03-07}
10 {propertyName New York City - Upper West Side Apt}
11 {propertyType Apartment}
12 {accommodatesNumber 2}
13 {maximumNumberOfNights 360}
14]
15[
16 {lastScrapedDate 2019-03-07}
17 {propertyName Sydney Hyde Park City Apartment (checkin from 6am)}
18 {propertyType Apartment}
19 {accommodatesNumber 2}
20 {maximumNumberOfNights 30}
21]
22[
23 {lastScrapedDate 2019-03-07}
24 {propertyName Private Room (2) in Guest House at Coogee Beach}
25 {propertyType House}
26 {accommodatesNumber 2}
27 {maximumNumberOfNights 365}
28]
29[
30 {lastScrapedDate 2019-03-06}
31 {propertyName ~Ao Lele~ Flying Cloud}
32 {propertyType Treehouse}
33 {accommodatesNumber 2}
34 {maximumNumberOfNights 30}
35]
1
junit
4.11 ou versão superior
mongodb-driver-sync
4.3.0 ou uma versão superior
slf4j-log4j12
1.7.30 ou uma versão superior
2
3

Se você criou um índice que usa mapeamentos dinâmicos, pode consultar a coleção airbnb_mat_view usando o operador queryString. Se você criou um índice que usa mapeamentos estáticos, pode consultar a coleção airbnb_mat_view usando o operador autocomplete.

O exemplo de código executa as seguintes tarefas:

  • Importa pacotes e dependências do mongodb .

  • Estabelece uma ligação ao seu cluster Atlas.

  • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

Observação

Para executar o código de exemplo em seu ambiente Maven, adicione o seguinte acima das declarações de importação no seu arquivo:

package com.mongodb.drivers;

A query a seguir pesquisa propriedades cujo tipo seja Apartment ou Condominium, acomoda 2 pessoas e foi listada em 2019.

1import java.util.Arrays;
2import static com.mongodb.client.model.Filters.eq;
3import static com.mongodb.client.model.Aggregates.limit;
4import static com.mongodb.client.model.Aggregates.project;
5import static com.mongodb.client.model.Projections.excludeId;
6import static com.mongodb.client.model.Projections.fields;
7import com.mongodb.client.MongoClient;
8import com.mongodb.client.MongoClients;
9import com.mongodb.client.MongoCollection;
10import com.mongodb.client.MongoDatabase;
11import org.bson.Document;
12
13public class DateNumberToStringQuery {
14 public static void main( String[] args ) {
15 // define query
16 Document agg = new Document("$search",
17 new Document ("index", "date-number-fields-tutorial")
18 .append("queryString",
19 new Document("defaultPath", "propertyType")
20 .append("query", "propertyType: (Apartment OR Condominium) AND accommodatesNumber: 4 AND lastScrapedDate: 2019")));
21
22 // specify connection
23 String uri = "<connection-string>";
24
25 // establish connection and set namespace
26 try (MongoClient mongoClient = MongoClients.create(uri)) {
27 MongoDatabase database = mongoClient.getDatabase("sample_airbnb");
28 MongoCollection<Document> collection = database.getCollection("airbnb_mat_view");
29 // run query and print results
30 collection.aggregate(Arrays.asList(agg,
31 limit(5),
32 project(fields(excludeId()) ))
33 ).forEach(doc -> System.out.println(doc.toJson()));
34 }
35 }
36}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

A consulta a seguir pesquisa propriedades em que o tipo de propriedade é House, hospeda 2 pessoas, foi listado em 2019 ou permite a estada de até 30 dias.

1import java.util.Arrays;
2import static com.mongodb.client.model.Filters.eq;
3import static com.mongodb.client.model.Aggregates.limit;
4import static com.mongodb.client.model.Aggregates.project;
5import static com.mongodb.client.model.Projections.excludeId;
6import static com.mongodb.client.model.Projections.fields;
7import com.mongodb.client.MongoClient;
8import com.mongodb.client.MongoClients;
9import com.mongodb.client.MongoCollection;
10import com.mongodb.client.MongoDatabase;
11import org.bson.Document;
12
13public class DateNumberToStringQuery {
14 public static void main( String[] args ) {
15 // define query
16 Document agg = new Document("$search",
17 new Document ("index", "date-number-fields-tutorial")
18 .append("queryString",
19 new Document("defaultPath", "propertyType")
20 .append("query", "propertyType: House OR accommodatesNumber: 2 OR lastScrapedDate: 2019 OR maximumNumberOfNights: 30")));
21
22 // specify connection
23 String uri = "<connection-string>";
24
25 // establish connection and set namespace
26 try (MongoClient mongoClient = MongoClients.create(uri)) {
27 MongoDatabase database = mongoClient.getDatabase("sample_airbnb");
28 MongoCollection<Document> collection = database.getCollection("airbnb_mat_view");
29 // run query and print results
30 collection.aggregate(Arrays.asList(agg,
31 limit(5),
32 project(fields(excludeId()) ))
33 ).forEach(doc -> System.out.println(doc.toJson()));
34 }
35 }
36}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

O exemplo de código executa as seguintes tarefas:

  • Importa pacotes e dependências do mongodb .

  • Estabelece uma ligação ao seu cluster Atlas.

  • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

Observação

Para executar o código de exemplo em seu ambiente Maven, adicione o seguinte acima das declarações de importação no seu arquivo:

package com.mongodb.drivers;

A query a seguir pesquisa propriedades listadas em algum momento começando com 2 e permite a permanência do número de noites começando com 1.

1import java.util.Arrays;
2import static com.mongodb.client.model.Filters.eq;
3import static com.mongodb.client.model.Aggregates.limit;
4import static com.mongodb.client.model.Aggregates.project;
5import static com.mongodb.client.model.Projections.excludeId;
6import static com.mongodb.client.model.Projections.fields;
7import com.mongodb.client.MongoClient;
8import com.mongodb.client.MongoClients;
9import com.mongodb.client.MongoCollection;
10import com.mongodb.client.MongoDatabase;
11import org.bson.Document;
12
13public class DateNumberToStringQuery {
14 public static void main( String[] args ) {
15 // define query
16 Document agg = new Document("$search",
17 new Document ("index", "date-number-fields-tutorial")
18 .append("compound",
19 new Document("should", Arrays.asList(
20 new Document("autocomplete",
21 new Document("path", "lastScrapedDate")
22 .append("query", "2")),
23 new Document("autocomplete",
24 new Document("path", "maximumNumberOfNights")
25 .append("query", "1"))))));
26
27 // specify connection
28 String uri = "<connection-string>";
29
30 // establish connection and set namespace
31 try (MongoClient mongoClient = MongoClients.create(uri)) {
32 MongoDatabase database = mongoClient.getDatabase("sample_airbnb");
33 MongoCollection<Document> collection = database.getCollection("airbnb_mat_view");
34 // run query and print results
35 collection.aggregate(Arrays.asList(
36 eq("$search", eq("compound", agg)),
37 limit(5),
38 project(fields(excludeId()) ))
39 ).forEach(doc -> System.out.println(doc.toJson()));
40 }
41 }
42}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

A query a seguir pesquisa propriedades que podem permitir a permanência do número de noites começando com 3 e acomodar o número de pessoas começando com 2.

1import java.util.Arrays;
2import static com.mongodb.client.model.Filters.eq;
3import static com.mongodb.client.model.Aggregates.limit;
4import static com.mongodb.client.model.Aggregates.project;
5import static com.mongodb.client.model.Projections.excludeId;
6import static com.mongodb.client.model.Projections.fields;
7import com.mongodb.client.MongoClient;
8import com.mongodb.client.MongoClients;
9import com.mongodb.client.MongoCollection;
10import com.mongodb.client.MongoDatabase;
11import org.bson.Document;
12
13public class DateNumberToStringQuery {
14 public static void main( String[] args ) {
15 // define query
16 Document agg = new Document("$search",
17 new Document ("index", "date-number-fields-tutorial")
18 .append("compound",
19 new Document("should", Arrays.asList(
20 new Document("autocomplete",
21 new Document("path", "maximumNumberOfNights")
22 .append("query", "3")),
23 new Document("autocomplete",
24 new Document("path", "accommodatesNumber")
25 .append("query", "2"))))));
26
27 // specify connection
28 String uri = "<connection-string>";
29
30 // establish connection and set namespace
31 try (MongoClient mongoClient = MongoClients.create(uri)) {
32 MongoDatabase database = mongoClient.getDatabase("sample_airbnb");
33 MongoCollection<Document> collection = database.getCollection("airbnb_mat_view");
34 // run query and print results
35 collection.aggregate(Arrays.asList(
36 eq("$search", eq("compound", agg)),
37 limit(5),
38 project(fields(excludeId()) ))
39 ).forEach(doc -> System.out.println(doc.toJson()));
40 }
41 }
42}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

4
javac DateNumberToStringQuery.java
java DateNumberToStringQuery
1{
2 "lastScrapedDate": "2019-03-06",
3 "propertyName": "LAHAINA, MAUI! RESORT/CONDO BEACHFRONT!! SLEEPS 4!",
4 "propertyType": "Condominium",
5 "accommodatesNumber": "4",
6 "maximumNumberOfNights": "1125"
7}
8{
9 "lastScrapedDate": "2019-03-06",
10 "propertyName": "Makaha Valley Paradise with OceanView",
11 "propertyType": "Condominium",
12 "accommodatesNumber": "4",
13 "maximumNumberOfNights": "180"
14}
15{
16 "lastScrapedDate": "2019-03-06",
17 "propertyName": "March 2019 availability! Oceanview on Sugar Beach!",
18 "propertyType": "Condominium",
19 "accommodatesNumber": "4",
20 "maximumNumberOfNights": "1125"
21}
22{
23 "lastScrapedDate": "2019-03-06",
24 "propertyName": "Tropical Jungle Oasis",
25 "propertyType": "Condominium",
26 "accommodatesNumber": "4",
27 "maximumNumberOfNights": "1125"
28}
29{
30 "lastScrapedDate": "2019-02-11",
31 "propertyName": "Hospede-se com acesso fácil.",
32 "propertyType": "Condominium",
33 "accommodatesNumber": "4",
34 "maximumNumberOfNights": "1125"
35}
javac DateNumberToStringQuery.java
java DateNumberToStringQuery
1{
2 "lastScrapedDate": "2019-02-11",
3 "propertyName": "2017 , férias no Rio",
4 "propertyType": "House",
5 "accommodatesNumber": "2",
6 "maximumNumberOfNights": "30"
7}
8{
9 "lastScrapedDate": "2019-03-07",
10 "propertyName": "Newly renovated home",
11 "propertyType": "House",
12 "accommodatesNumber": "2",
13 "maximumNumberOfNights": "30"
14}
15{
16 "lastScrapedDate": "2019-02-18",
17 "propertyName": "Vintage House For Rent",
18 "propertyType": "House",
19 "accommodatesNumber": "2",
20 "maximumNumberOfNights": "30"
21}
22{
23 "lastScrapedDate": "2019-02-18",
24 "propertyName": "4floor house in Taksim,Taksimde 4katli müstakil ev",
25 "propertyType": "House",
26 "accommodatesNumber": "2",
27 "maximumNumberOfNights": "30"
28}
29{
30 "lastScrapedDate": "2019-02-16",
31 "propertyName": "22 Oporto Guesthouse Cordoaria",
32 "propertyType": "House",
33 "accommodatesNumber": "2",
34 "maximumNumberOfNights": "30"
35}
javac DateNumberToStringQuery.java
java DateNumberToStringQuery
1{
2 "lastScrapedDate": "2019-02-11",
3 "propertyName": "Horto flat with small garden",
4 "propertyType": "Apartment",
5 "accommodatesNumber": "4",
6 "maximumNumberOfNights": "1125"
7}
8{
9 "lastScrapedDate": "2019-03-06",
10 "propertyName": "Private Room in Bushwick",
11 "propertyType": "Apartment",
12 "accommodatesNumber": "1",
13 "maximumNumberOfNights": "1125"
14}
15{
16 "lastScrapedDate": "2019-02-11",
17 "propertyName": "Apt Linda Vista Lagoa - Rio",
18 "propertyType": "Apartment",
19 "accommodatesNumber": "2",
20 "maximumNumberOfNights": "1125"
21}
22{
23 "lastScrapedDate": "2019-02-18",
24 "propertyName": "Charming Flat in Downtown Moda",
25 "propertyType": "House",
26 "accommodatesNumber": "6",
27 "maximumNumberOfNights": "1125"
28}
29{
30 "lastScrapedDate": "2019-02-11",
31 "propertyName": "Catete's Colonial Big Hause Room B",
32 "propertyType": "House",
33 "accommodatesNumber": "8",
34 "maximumNumberOfNights": "1125"
35}
javac DateNumberToStringQuery.java
java DateNumberToStringQuery
1{
2 "lastScrapedDate": "2019-03-06",
3 "propertyName": "Ocean View Waikiki Marina w/prkg",
4 "propertyType": "Condominium",
5 "accommodatesNumber": "2",
6 "maximumNumberOfNights": "365"
7}
8{
9 "lastScrapedDate": "2019-03-07",
10 "propertyName": "New York City - Upper West Side Apt",
11 "propertyType": "Apartment",
12 "accommodatesNumber": "2",
13 "maximumNumberOfNights": "360"
14}
15{
16 "lastScrapedDate": "2019-03-07",
17 "propertyName": "Sydney Hyde Park City Apartment (checkin from 6am)",
18 "propertyType": "Apartment",
19 "accommodatesNumber": "2",
20 "maximumNumberOfNights": "30"
21}
22{
23 "lastScrapedDate": "2019-03-07",
24 "propertyName": "Private Room (2) in Guest House at Coogee Beach",
25 "propertyType": "House",
26 "accommodatesNumber": "2",
27 "maximumNumberOfNights": "365"
28}
29{
30 "lastScrapedDate": "2019-03-06",
31 "propertyName": "~Ao Lele~ Flying Cloud",
32 "propertyType": "Treehouse",
33 "accommodatesNumber": "2",
34 "maximumNumberOfNights": "30"
35}
1
mongodb-driver-kotlin-coroutine
4.10.0 ou uma versão superior
2
3

Se você criou um índice que usa mapeamentos dinâmicos, pode consultar a coleção airbnb_mat_view usando o operador queryString. Se você criou um índice que usa mapeamentos estáticos, pode consultar a coleção airbnb_mat_view usando o operador autocomplete.

O exemplo de código executa as seguintes tarefas:

  • Importa pacotes e dependências do mongodb .

  • Estabelece uma ligação ao seu cluster Atlas.

  • Imprime os documentos que correspondem à query da instância AggregateFlow.

A query a seguir pesquisa propriedades cujo tipo seja Apartment ou Condominium, acomoda 2 pessoas e foi listada em 2019.

1import com.mongodb.client.model.Aggregates.limit
2import com.mongodb.client.model.Aggregates.project
3import com.mongodb.client.model.Projections.*
4import com.mongodb.kotlin.client.coroutine.MongoClient
5import kotlinx.coroutines.runBlocking
6import org.bson.Document
7
8fun main() {
9 // establish connection and set namespace
10 val uri = "<connection-string>"
11 val mongoClient = MongoClient.create(uri)
12 val database = mongoClient.getDatabase("sample_airbnb")
13 val collection = database.getCollection<Document>("airbnb_mat_view")
14
15 runBlocking {
16 // define query
17 val agg = Document(
18 "\$search",
19 Document("index", "date-number-fields-tutorial")
20 .append(
21 "queryString",
22 Document("defaultPath", "propertyType")
23 .append(
24 "query",
25 "propertyType: (Apartment OR Condominium) AND accommodatesNumber: 4 AND lastScrapedDate: 2019"
26 )
27 )
28 )
29
30 // run query and print results
31 val resultsFlow = collection.aggregate<Document>(
32 listOf(
33 agg,
34 limit(5),
35 project(fields(excludeId()))
36 )
37 )
38 resultsFlow.collect { println(it) }
39 }
40 mongoClient.close()
41}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

A consulta a seguir pesquisa propriedades em que o tipo de propriedade é House, hospeda 2 pessoas, foi listado em 2019 ou permite a estada de até 30 dias.

1import com.mongodb.client.model.Aggregates.limit
2import com.mongodb.client.model.Aggregates.project
3import com.mongodb.client.model.Projections.excludeId
4import com.mongodb.client.model.Projections.fields
5import com.mongodb.kotlin.client.coroutine.MongoClient
6import kotlinx.coroutines.runBlocking
7import org.bson.Document
8
9fun main() {
10 // establish connection and set namespace
11 val uri = "<connection-string>"
12 val mongoClient = MongoClient.create(uri)
13 val database = mongoClient.getDatabase("sample_airbnb")
14 val collection = database.getCollection<Document>("airbnb_mat_view")
15
16 runBlocking {
17 // define query
18 val agg = Document(
19 "\$search",
20 Document("index", "date-number-fields-tutorial")
21 .append(
22 "queryString",
23 Document("defaultPath", "propertyType")
24 .append(
25 "query",
26 "propertyType: House OR accommodatesNumber: 2 OR lastScrapedDate: 2019 OR maximumNumberOfNights: 30"
27 )
28 )
29 )
30
31 // run query and print results
32 val resultsFlow = collection.aggregate<Document>(
33 listOf(
34 agg,
35 limit(5),
36 project(fields(excludeId()))
37 )
38 )
39 resultsFlow.collect { println(it) }
40 }
41 mongoClient.close()
42}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

O exemplo de código executa as seguintes tarefas:

  • Importa pacotes e dependências do mongodb .

  • Estabelece uma ligação ao seu cluster Atlas.

  • Imprime os documentos que correspondem à query da instância AggregateFlow.

A query a seguir pesquisa propriedades listadas em algum momento começando com 2 e permite a permanência do número de noites começando com 1.

1import com.mongodb.client.model.Aggregates.limit
2import com.mongodb.client.model.Aggregates.project
3import com.mongodb.client.model.Projections.*
4import com.mongodb.kotlin.client.coroutine.MongoClient
5import kotlinx.coroutines.runBlocking
6import org.bson.Document
7
8fun main() {
9 // establish connection and set namespace
10 val uri = "<connection-string>"
11 val mongoClient = MongoClient.create(uri)
12 val database = mongoClient.getDatabase("sample_airbnb")
13 val collection = database.getCollection<Document>("airbnb_mat_view")
14
15 runBlocking {
16 // define query
17 val agg = Document(
18 "\$search",
19 Document("index", "date-number-fields-tutorial")
20 .append(
21 "compound",
22 Document(
23 "should", listOf(
24 Document(
25 "autocomplete",
26 Document("path", "lastScrapedDate")
27 .append("query", "2")
28 ),
29 Document(
30 "autocomplete",
31 Document("path", "maximumNumberOfNights")
32 .append("query", "1")
33 )
34 )
35 )
36 )
37 )
38
39 // run query and print results
40 val resultsFlow = collection.aggregate<Document>(
41 listOf(
42 agg,
43 limit(5),
44 project(fields(excludeId()))
45 )
46 )
47 resultsFlow.collect { println(it) }
48 }
49 mongoClient.close()
50}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

A query a seguir pesquisa propriedades que podem permitir a permanência do número de noites começando com 3 e acomodar o número de pessoas começando com 2.

1import com.mongodb.client.model.Aggregates.limit
2import com.mongodb.client.model.Aggregates.project
3import com.mongodb.client.model.Projections.*
4import com.mongodb.kotlin.client.coroutine.MongoClient
5import kotlinx.coroutines.runBlocking
6import org.bson.Document
7
8fun main() {
9 // establish connection and set namespace
10 val uri = "<connection-string>"
11 val mongoClient = MongoClient.create(uri)
12 val database = mongoClient.getDatabase("sample_airbnb")
13 val collection = database.getCollection<Document>("airbnb_mat_view")
14
15 runBlocking {
16 // define query
17 val agg = Document(
18 "\$search",
19 Document("index", "date-number-fields-tutorial")
20 .append(
21 "compound",
22 Document(
23 "should", listOf(
24 Document(
25 "autocomplete",
26 Document("path", "maximumNumberOfNights")
27 .append("query", "3")
28 ),
29 Document(
30 "autocomplete",
31 Document("path", "accommodatesNumber")
32 .append("query", "2")
33 )
34 )
35 )
36 )
37 )
38
39 // run query and print results
40 val resultsFlow = collection.aggregate<Document>(
41 listOf(
42 agg,
43 limit(5),
44 project(fields(excludeId()))
45 )
46 )
47 resultsFlow.collect { println(it) }
48 }
49 mongoClient.close()
50}

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

4

Ao executar o programa DateNumberToStringQuery.kt no seu IDE, ele imprime os seguintes documentos:

Document{{lastScrapedDate=2019-03-06, propertyName=Tropical Jungle Oasis, propertyType=Condominium, accommodatesNumber=4, maximumNumberOfNights=1125}}
Document{{lastScrapedDate=2019-03-06, propertyName=Honolulu 1 BR/1Bath Condo - Hilton Hawaiian, propertyType=Condominium, accommodatesNumber=4, maximumNumberOfNights=7}}
Document{{lastScrapedDate=2019-03-06, propertyName=Beautiful Apt, Tropical Resort, Steps to the Beach, propertyType=Condominium, accommodatesNumber=4, maximumNumberOfNights=45}}
Document{{lastScrapedDate=2019-03-06, propertyName=Ocean View in the heart of Waikiki, propertyType=Condominium, accommodatesNumber=4, maximumNumberOfNights=1125}}
Document{{lastScrapedDate=2019-03-06, propertyName=Aloha, Kihei Bay Surf, New Pool and BBQ, propertyType=Condominium, accommodatesNumber=4, maximumNumberOfNights=1125}}

Ao executar o programa DateNumberToStringQuery.kt no seu IDE, ele imprime os seguintes documentos:

Document{{lastScrapedDate=2019-03-11, propertyName=This room is perfect for responsible guests, propertyType=House, accommodatesNumber=2, maximumNumberOfNights=30}}
Document{{lastScrapedDate=2019-03-06, propertyName=Queen Room at Beautiful Upscale Organic Farm, propertyType=House, accommodatesNumber=2, maximumNumberOfNights=30}}
Document{{lastScrapedDate=2019-03-11, propertyName=Incredible space with amazing views, propertyType=House, accommodatesNumber=2, maximumNumberOfNights=30}}
Document{{lastScrapedDate=2019-02-16, propertyName=Varanda Porto, propertyType=House, accommodatesNumber=2, maximumNumberOfNights=30}}
Document{{lastScrapedDate=2019-03-06, propertyName=Bright, Clean, Quiet, Modern, propertyType=House, accommodatesNumber=2, maximumNumberOfNights=30}}

Ao executar o programa DateNumberToStringQuery.kt no seu IDE, ele imprime os seguintes documentos:

Document{{lastScrapedDate=2019-03-07, propertyName=Deluxe Loft Suite, propertyType=Apartment, accommodatesNumber=4, maximumNumberOfNights=1125}}
Document{{lastScrapedDate=2019-03-11, propertyName=3 chambres au coeur du Plateau, propertyType=Apartment, accommodatesNumber=6, maximumNumberOfNights=1125}}
Document{{lastScrapedDate=2019-02-16, propertyName=Be Happy in Porto, propertyType=Loft, accommodatesNumber=2, maximumNumberOfNights=1125}}
Document{{lastScrapedDate=2019-02-18, propertyName=Cozy house at Beyoğlu, propertyType=Apartment, accommodatesNumber=2, maximumNumberOfNights=1125}}
Document{{lastScrapedDate=2019-02-16, propertyName=Downtown Oporto Inn (room cleaning), propertyType=Hostel, accommodatesNumber=2, maximumNumberOfNights=1125}}

Ao executar o programa DateNumberToStringQuery.kt no seu IDE, ele imprime os seguintes documentos:

Document{{lastScrapedDate=2019-03-06, propertyName=Ocean View Waikiki Marina w/prkg, propertyType=Condominium, accommodatesNumber=2, maximumNumberOfNights=365}}
Document{{lastScrapedDate=2019-03-07, propertyName=New York City - Upper West Side Apt, propertyType=Apartment, accommodatesNumber=2, maximumNumberOfNights=360}}
Document{{lastScrapedDate=2019-03-06, propertyName=~Ao Lele~ Flying Cloud, propertyType=Treehouse, accommodatesNumber=2, maximumNumberOfNights=30}}
Document{{lastScrapedDate=2019-03-06, propertyName=Banyan Bungalow, propertyType=Bungalow, accommodatesNumber=2, maximumNumberOfNights=300}}
Document{{lastScrapedDate=2019-03-06, propertyName=Luxury 1-Bdrm in Downtown Brooklyn, propertyType=Apartment, accommodatesNumber=2, maximumNumberOfNights=30}}
1
2

Se você criou um índice que usa mapeamentos dinâmicos, pode consultar a coleção airbnb_mat_view usando o operador queryString. Se você criou um índice que usa mapeamentos estáticos, pode consultar a coleção airbnb_mat_view usando o operador autocomplete.

O exemplo de código executa as seguintes tarefas:

  • Importa mongodb, o driver Node.js do MongoDB.

  • Cria uma instância da classe MongoClient para estabelecer uma conexão com seu cluster do Atlas.

  • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

A query a seguir pesquisa propriedades cujo tipo seja Apartment ou Condominium, acomoda 2 pessoas e foi listada em 2019.

1const MongoClient = require("mongodb").MongoClient;
2const assert = require("assert");
3
4const agg = [
5 {
6 '$search': {
7 'index': 'date-number-fields-tutorial',
8 'queryString': {
9 'defaultPath': 'propertyType',
10 'query': 'propertyType: (Apartment OR Condominium) AND accommodatesNumber: 4 AND lastScrapedDate: 2019'
11 }
12 }
13 }, {
14 '$limit': 5
15 }, {
16 '$project': {
17 '_id': 0
18 }
19 }
20];
21
22MongoClient.connect(
23 "<connection-string>",
24 { useNewUrlParser: true, useUnifiedTopology: true },
25 async function (connectErr, client) {
26 assert.equal(null, connectErr);
27 const coll = client.db("sample_airbnb").collection("airbnb_mat_view");
28 let cursor = await coll.aggregate(agg);
29 await cursor.forEach((doc) => console.log(doc));
30 client.close();
31 }
32);

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

A consulta a seguir pesquisa propriedades em que o tipo de propriedade é House, hospeda 2 pessoas, foi listado em 2019 ou permite a estada de até 30 dias.

1const MongoClient = require("mongodb").MongoClient;
2const assert = require("assert");
3
4const agg = [
5 {
6 '$search': {
7 'index': 'date-number-fields-tutorial',
8 'queryString': {
9 'defaultPath': 'propertyType',
10 'query': 'propertyType: House OR accommodatesNumber: 2 OR lastScrapedDate: 2019 OR maximumNumberOfNights: 30'
11 }
12 }
13 }, {
14 '$limit': 5
15 }, {
16 '$project': {
17 '_id': 0
18 }
19 }
20];
21
22MongoClient.connect(
23 "<connection-string>",
24 { useNewUrlParser: true, useUnifiedTopology: true },
25 async function (connectErr, client) {
26 assert.equal(null, connectErr);
27 const coll = client.db("sample_airbnb").collection("airbnb_mat_view");
28 let cursor = await coll.aggregate(agg);
29 await cursor.forEach((doc) => console.log(doc));
30 client.close();
31 }
32);

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

O exemplo de código executa as seguintes tarefas:

  • Importa mongodb, o driver Node.js do MongoDB.

  • Cria uma instância da classe MongoClient para estabelecer uma conexão com seu cluster do Atlas.

  • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

A query a seguir pesquisa propriedades listadas em algum momento começando com 2 e permite a permanência do número de noites começando com 1.

1const MongoClient = require("mongodb").MongoClient;
2const assert = require("assert");
3
4const agg = [
5 {
6 '$search': {
7 'index': 'date-number-fields-tutorial',
8 'compound': {
9 'should': [
10 {
11 'autocomplete': {
12 'path': 'lastScrapedDate',
13 'query': '2'
14 }
15 }, {
16 'autocomplete': {
17 'path': 'maximumNumberOfNights',
18 'query': '1'
19 }
20 }
21 ]
22 }
23 }
24 }, {
25 '$limit': 5
26 }, {
27 '$project': {
28 '_id': 0
29 }
30 }
31];
32
33MongoClient.connect(
34 "<connection-string>",
35 { useNewUrlParser: true, useUnifiedTopology: true },
36 async function (connectErr, client) {
37 assert.equal(null, connectErr);
38 const coll = client.db("sample_airbnb").collection("airbnb_mat_view");
39 let cursor = await coll.aggregate(agg);
40 await cursor.forEach((doc) => console.log(doc));
41 client.close();
42 }
43);

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

A query a seguir pesquisa propriedades que podem permitir a permanência do número de noites começando com 3 e acomodar o número de pessoas começando com 2.

1const MongoClient = require("mongodb").MongoClient;
2const assert = require("assert");
3
4const agg = [
5 {
6 '$search': {
7 'index': 'date-number-fields-tutorial',
8 'compound': {
9 'should': [
10 {
11 'autocomplete': {
12 'path': 'maximumNumberOfNights',
13 'query': '3'
14 }
15 }, {
16 'autocomplete': {
17 'path': 'accommodatesNumber',
18 'query': '2'
19 }
20 }
21 ]
22 }
23 }
24 }, {
25 '$limit': 5
26 }, {
27 '$project': {
28 '_id': 0
29 }
30 }
31];
32
33MongoClient.connect(
34 "<connection-string>",
35 { useNewUrlParser: true, useUnifiedTopology: true },
36 async function (connectErr, client) {
37 assert.equal(null, connectErr);
38 const coll = client.db("sample_airbnb").collection("airbnb_mat_view");
39 let cursor = await coll.aggregate(agg);
40 await cursor.forEach((doc) => console.log(doc));
41 client.close();
42 }
43);

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

3
node date-number-to-string-query.js
1 {
2 lastScrapedDate: '2019-03-06',
3 propertyName: 'LAHAINA, MAUI! RESORT/CONDO BEACHFRONT!! SLEEPS 4!',
4 propertyType: 'Condominium',
5 accommodatesNumber: '4',
6 maximumNumberOfNights: '1125'
7 }
8 {
9 lastScrapedDate: '2019-03-06',
10 propertyName: 'Makaha Valley Paradise with OceanView',
11 propertyType: 'Condominium',
12 accommodatesNumber: '4',
13 maximumNumberOfNights: '180'
14 }
15 {
16 lastScrapedDate: '2019-03-06',
17 propertyName: 'March 2019 availability! Oceanview on Sugar Beach!',
18 propertyType: 'Condominium',
19 accommodatesNumber: '4',
20 maximumNumberOfNights: '1125'
21 }
22 {
23 lastScrapedDate: '2019-03-06',
24 propertyName: 'Tropical Jungle Oasis',
25 propertyType: 'Condominium',
26 accommodatesNumber: '4',
27 maximumNumberOfNights: '1125'
28 }
29 {
30 lastScrapedDate: '2019-02-11',
31 propertyName: 'Hospede-se com acesso fácil.',
32 propertyType: 'Condominium',
33 accommodatesNumber: '4',
34 maximumNumberOfNights: '1125'
35 }
36
node date-number-to-string-query.js
1 {
2 lastScrapedDate: '2019-02-11',
3 propertyName: '2017 , férias no Rio',
4 propertyType: 'House',
5 accommodatesNumber: '2',
6 maximumNumberOfNights: '30'
7 }
8 {
9 lastScrapedDate: '2019-03-07',
10 propertyName: 'Newly renovated home',
11 propertyType: 'House',
12 accommodatesNumber: '2',
13 maximumNumberOfNights: '30'
14 }
15 {
16 lastScrapedDate: '2019-02-18',
17 propertyName: 'Vintage House For Rent',
18 propertyType: 'House',
19 accommodatesNumber: '2',
20 maximumNumberOfNights: '30'
21 }
22 {
23 lastScrapedDate: '2019-02-18',
24 propertyName: '4floor house in Taksim,Taksimde 4katli müstakil ev',
25 propertyType: 'House',
26 accommodatesNumber: '2',
27 maximumNumberOfNights: '30'
28 }
29 {
30 lastScrapedDate: '2019-02-16',
31 propertyName: '22 Oporto Guesthouse Cordoaria',
32 propertyType: 'House',
33 accommodatesNumber: '2',
34 maximumNumberOfNights: '30'
35 }
node date-number-to-string-query.js
1 {
2 lastScrapedDate: '2019-02-11',
3 propertyName: 'Horto flat with small garden',
4 propertyType: 'Apartment',
5 accommodatesNumber: '4',
6 maximumNumberOfNights: '1125'
7 }
8 {
9 lastScrapedDate: '2019-03-06',
10 propertyName: 'Private Room in Bushwick',
11 propertyType: 'Apartment',
12 accommodatesNumber: '1',
13 maximumNumberOfNights: '1125'
14 }
15 {
16 lastScrapedDate: '2019-02-11',
17 propertyName: 'Apt Linda Vista Lagoa - Rio',
18 propertyType: 'Apartment',
19 accommodatesNumber: '2',
20 maximumNumberOfNights: '1125'
21 }
22 {
23 lastScrapedDate: '2019-02-18',
24 propertyName: 'Charming Flat in Downtown Moda',
25 propertyType: 'House',
26 accommodatesNumber: '6',
27 maximumNumberOfNights: '1125'
28 }
29 {
30 lastScrapedDate: '2019-02-11',
31 propertyName: "Catete's Colonial Big Hause Room B",
32 propertyType: 'House',
33 accommodatesNumber: '8',
34 maximumNumberOfNights: '1125'
35 }
node date-number-to-string-query.js
1 {
2 lastScrapedDate: '2019-03-06',
3 propertyName: 'Ocean View Waikiki Marina w/prkg',
4 propertyType: 'Condominium',
5 accommodatesNumber: '2',
6 maximumNumberOfNights: '365'
7 }
8 {
9 lastScrapedDate: '2019-03-07',
10 propertyName: 'New York City - Upper West Side Apt',
11 propertyType: 'Apartment',
12 accommodatesNumber: '2',
13 maximumNumberOfNights: '360'
14 }
15 {
16 lastScrapedDate: '2019-03-07',
17 propertyName: 'Sydney Hyde Park City Apartment (checkin from 6am)',
18 propertyType: 'Apartment',
19 accommodatesNumber: '2',
20 maximumNumberOfNights: '30'
21 }
22 {
23 lastScrapedDate: '2019-03-07',
24 propertyName: 'Private Room (2) in Guest House at Coogee Beach',
25 propertyType: 'House',
26 accommodatesNumber: '2',
27 maximumNumberOfNights: '365'
28 }
29 {
30 lastScrapedDate: '2019-03-06',
31 propertyName: '~Ao Lele~ Flying Cloud',
32 propertyType: 'Treehouse',
33 accommodatesNumber: '2',
34 maximumNumberOfNights: '30'
35 }
1
2

Se você criou um índice que usa mapeamentos dinâmicos, pode consultar a coleção airbnb_mat_view usando o operador queryString. Se você criou um índice que usa mapeamentos estáticos, pode consultar a coleção airbnb_mat_view usando o operador autocomplete.

O exemplo de código executa as seguintes tarefas:

  • Importa pymongo, o driver Python do MongoDB, e o módulo dns, que é necessário para conectar pymongo a Atlas usando uma string de conexão da lista de sementes de DNS.

  • Cria uma instância da classe MongoClient para estabelecer uma conexão com seu cluster do Atlas.

  • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

A query a seguir pesquisa propriedades cujo tipo seja Apartment ou Condominium, acomoda 2 pessoas e foi listada em 2019.

1import pymongo
2import dns
3
4client = pymongo.MongoClient('<connection-string>')
5result = client['sample_airbnb']['airbnb_mat_view'].aggregate([
6 {
7 '$search': {
8 'index': 'date-number-fields-tutorial',
9 'queryString': {
10 'defaultPath': 'propertyType',
11 'query': 'propertyType: (Apartment OR Condominium) AND accommodatesNumber: 4 AND lastScrapedDate: 2019'
12 }
13 }
14 }, {
15 '$limit': 5
16 }, {
17 '$project': {
18 '_id': 0
19 }
20 }
21])
22
23for i in result:
24 print(i)

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

A consulta a seguir pesquisa propriedades em que o tipo de propriedade é House, hospeda 2 pessoas, foi listado em 2019 ou permite a estada de até 30 dias.

1import pymongo
2import dns
3
4client = pymongo.MongoClient('<connection-string>')
5result = client['sample_airbnb']['airbnb_mat_view'].aggregate([
6 {
7 '$search': {
8 'index': 'date-number-fields-tutorial',
9 'queryString': {
10 'defaultPath': 'propertyType',
11 'query': 'propertyType: House OR accommodatesNumber: 2 OR lastScrapedDate: 2019 OR maximumNumberOfNights: 30'
12 }
13 }
14 }, {
15 '$limit': 5
16 }, {
17 '$project': {
18 '_id': 0
19 }
20 }
21])
22
23for i in result:
24 print(i)

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

O exemplo de código executa as seguintes tarefas:

  • Importa pymongo, o driver Python do MongoDB e o módulo dns, que é necessário para conectar pymongo a Atlas usando uma string de conexão da lista de sementes de DNS.

  • Cria uma instância da classe MongoClient para estabelecer uma conexão com seu cluster do Atlas.

  • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

A query a seguir pesquisa propriedades listadas em algum momento começando com 2 e permite a permanência do número de noites começando com 1.

1import pymongo
2import dns
3
4client = pymongo.MongoClient('<connection-string>')
5result = client['sample_airbnb']['airbnb_mat_view'].aggregate([
6 {
7 '$search': {
8 'index': 'date-number-fields-tutorial',
9 'compound': {
10 'should': [
11 {
12 'autocomplete': {
13 'path': 'lastScrapedDate',
14 'query': '2'
15 }
16 }, {
17 'autocomplete': {
18 'path': 'maximumNumberOfNights',
19 'query': '1'
20 }
21 }
22 ]
23 }
24 }
25 }, {
26 '$limit': 5
27 }, {
28 '$project': {
29 '_id': 0
30 }
31 }
32])
33
34for i in result:
35 print(i)

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

A query a seguir pesquisa propriedades que podem permitir a permanência do número de noites começando com 3 e acomodar o número de pessoas começando com 2.

1import pymongo
2import dns
3
4client = pymongo.MongoClient('<connection-string>')
5result = client['sample_airbnb']['airbnb_mat_view'].aggregate([
6 {
7 '$search': {
8 'index': 'date-number-fields-tutorial',
9 'compound': {
10 'should': [
11 {
12 'autocomplete': {
13 'path': 'maximumNumberOfNights',
14 'query': '3'
15 }
16 }, {
17 'autocomplete': {
18 'path': 'accommodatesNumber',
19 'query': '2'
20 }
21 }
22 ]
23 }
24 }
25 }, {
26 '$limit': 5
27 }, {
28 '$project': {
29 '_id': 0
30 }
31 }
32])
33
34for i in result:
35 print(i)

Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

3
python date-number-to-string-query.py
1{
2 'lastScrapedDate': '2019-03-06',
3 'propertyName': 'LAHAINA, MAUI! RESORT/CONDO BEACHFRONT!! SLEEPS 4!',
4 'propertyType': 'Condominium',
5 'accommodatesNumber': '4',
6 'maximumNumberOfNights': '1125'
7}
8{
9 'lastScrapedDate': '2019-03-06',
10 'propertyName': 'Makaha Valley Paradise with OceanView',
11 'propertyType': 'Condominium',
12 'accommodatesNumber': '4',
13 'maximumNumberOfNights': '180'
14}
15{
16 'lastScrapedDate': '2019-03-06',
17 'propertyName': 'March 2019 availability! Oceanview on Sugar Beach!',
18 'propertyType': 'Condominium',
19 'accommodatesNumber': '4',
20 'maximumNumberOfNights': '1125'
21}
22{
23 'lastScrapedDate': '2019-03-06',
24 'propertyName': 'Tropical Jungle Oasis',
25 'propertyType': 'Condominium',
26 'accommodatesNumber': '4',
27 'maximumNumberOfNights': '1125'
28}
29{
30 'lastScrapedDate': '2019-02-11',
31 'propertyName': 'Hospede-se com acesso fácil.',
32 'propertyType': 'Condominium',
33 'accommodatesNumber': '4',
34 'maximumNumberOfNights': '1125'
35}
python date-number-to-string-query.py
1{
2 'lastScrapedDate': '2019-02-11',
3 'propertyName': '2017 , férias no Rio',
4 'propertyType': 'House',
5 'accommodatesNumber': '2',
6 'maximumNumberOfNights': '30'
7}
8{
9 'lastScrapedDate': '2019-03-07',
10 'propertyName': 'Newly renovated home',
11 'propertyType': 'House',
12 'accommodatesNumber': '2',
13 'maximumNumberOfNights': '30'
14}
15{
16 'lastScrapedDate': '2019-02-18',
17 'propertyName': 'Vintage House For Rent',
18 'propertyType': 'House',
19 'accommodatesNumber': '2',
20 'maximumNumberOfNights': '30'
21}
22{
23 'lastScrapedDate': '2019-02-18',
24 'propertyName': '4floor house in Taksim,Taksimde 4katli müstakil ev',
25 'propertyType': 'House',
26 'accommodatesNumber': '2',
27 'maximumNumberOfNights': '30'
28}
29{
30 'lastScrapedDate': '2019-02-16',
31 'propertyName': '22 Oporto Guesthouse Cordoaria',
32 'propertyType': 'House',
33 'accommodatesNumber': '2',
34 'maximumNumberOfNights': '30'
35}
python date-number-to-string-query.py
1{
2 'lastScrapedDate': '2019-02-11',
3 'propertyName': 'Horto flat with small garden',
4 'propertyType': 'Apartment',
5 'accommodatesNumber': '4',
6 'maximumNumberOfNights': '1125'
7}
8{
9 'lastScrapedDate': '2019-03-06',
10 'propertyName': 'Private Room in Bushwick',
11 'propertyType': 'Apartment',
12 'accommodatesNumber': '1',
13 'maximumNumberOfNights': '1125'
14}
15{
16 'lastScrapedDate': '2019-02-11',
17 'propertyName': 'Apt Linda Vista Lagoa - Rio',
18 'propertyType': 'Apartment',
19 'accommodatesNumber': '2',
20 'maximumNumberOfNights': '1125'
21}
22{
23 'lastScrapedDate': '2019-02-18',
24 'propertyName': 'Charming Flat in Downtown Moda',
25 'propertyType': 'House',
26 'accommodatesNumber': '6',
27 'maximumNumberOfNights': '1125'
28}
29{
30 'lastScrapedDate': '2019-02-11',
31 'propertyName': "Catete's Colonial Big Hause Room B",
32 'propertyType': 'House',
33 'accommodatesNumber': '8',
34 'maximumNumberOfNights': '1125'
35}
python date-number-to-string-query.py
1{
2 'lastScrapedDate': '2019-03-06',
3 'propertyName': 'Ocean View Waikiki Marina w/prkg',
4 'propertyType': 'Condominium',
5 'accommodatesNumber': '2',
6 'maximumNumberOfNights': '365'
7}
8{
9 'lastScrapedDate': '2019-03-07',
10 'propertyName': 'New York City - Upper West Side Apt',
11 'propertyType': 'Apartment',
12 'accommodatesNumber': '2',
13 'maximumNumberOfNights': '360'
14}
15{
16 'lastScrapedDate': '2019-03-07',
17 'propertyName': 'Sydney Hyde Park City Apartment (checkin from 6am)',
18 'propertyType': 'Apartment',
19 'accommodatesNumber': '2',
20 'maximumNumberOfNights': '30'
21}
22{
23 'lastScrapedDate': '2019-03-07',
24 'propertyName': 'Private Room (2) in Guest House at Coogee Beach',
25 'propertyType': 'House',
26 'accommodatesNumber': '2',
27 'maximumNumberOfNights': '365'
28}
29{
30 'lastScrapedDate': '2019-03-06',
31 'propertyName': '~Ao Lele~ Flying Cloud',
32 'propertyType': 'Treehouse',
33 'accommodatesNumber': '2',
34 'maximumNumberOfNights': '30'
35}

Voltar

Filtro de intervalo de datas