Como executar consultas de string de pesquisa do Atlas Search em campos numéricos e de data
Nesta página
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:
Crie uma visualização materializada nos campos
name
sample_airbnb.listingsAndReviews
da collection ,property_type
,last_scraped
eaccomodates
.Configure índices dinâmicos e estáticos do Atlas Search na visualização materializada.
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.
Crie uma visualização materializada na collection
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.
Log in to Atlas and connect to your cluster using mongosh
.
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
.
Verify and switch to the sample_airbnb
database.
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 Execute o seguinte comando para alternar para o banco de banco de dados
sample_airbnb
.use sample_airbnb switched to db sample_airbnb
Create a materialized view named airbnb_mat_view
.
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 formatoYYYY-MM-DD
usando$dateToString
.Inclui campos de string
name
eproperty_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 chamadaairbnb_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" } } ] )
Verifique se a visualização materializada foi criada com sucesso.
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' }
Crie índices do Atlas Search nos campos da visualização materializada
Nesta seção, você criará índices do Atlas Search nos campos lastScrapedDate
, name
, propertyType
, accommodatesNumber
e maximumNumberOfNights
para executar queries nestes campos.
No Atlas, acesse a Clusters página do seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.
Se ainda não estiver exibido, clique em Clusters na barra lateral.
A página Clusters é exibida.
Acesse a página do Atlas Search do seu cluster.
Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.
Na barra lateral, clique em Atlas Search sob o título Services.
No menu suspenso Select data source, selecione seu cluster e clique em Go to Atlas Search.
A página Atlas Search é exibida.
Clique no botão Browse Collections para o seu cluster.
Expanda o banco de dados e selecione a coleção.
Clique na guia Search Indexes da coleção.
A página Atlas Search é exibida.
Clique no nome do seu cluster.
Clique na aba Atlas Search.
A página Atlas Search é exibida.
Insira o Index Name e defina o Database and Collection.
No campo Index Name, digite
date-number-fields-tutorial
.Se você nomear seu índice
default
, não precisará especificar um parâmetroindex
no estágio do pipeline $search . Se você der um nome personalizado ao seu índice, deverá especificar este nome no parâmetroindex
.Na seção Database and Collection, localize o banco de dados
sample_airbnb
e selecione a coleçãoairbnb_mat_view
.
Defina um índice nos campos na visualização materializada.
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.
Clique em Next.
Clique em Create Search Index.
Revise a definição do índice.
A definição do seu índice deve ser semelhante a esta:
{ "mappings": { "dynamic": true } } Clique em Next.
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.
Clique em Next
Clique em Refine Your Index.
Clique em Add Field na seção Field Mappings.
Clique em Customized Configuration na janela Add Field Mapping.
Selecione accommodatesNumber no menu suspenso Field Name.
Clique no menu suspenso Data Type, selecione Autocomplete no menu suspenso e configure os seguintes campos:
Nome do campo UIConfiguraçãoMax Grams<maximum number of characters to index per sequence, numeric value>
Min Grams<minimum number of characters to index per sequence, numeric value.
TokenizationedgeGramFold Diacriticstruevalores muito baixos para
Min Grams
podem resultar em um índice muito grande.Clique em Add para adicionar o campo à tabela Field Mappings.
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
Clique em Save Changes.
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" } ] } } } Clique em Next.
Realizar pesquisa de texto em campos convertidos
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 a5
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.
Conecte-se ao seu cluster usando mongosh
.
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
.
Use o sample_airbnb
banco de banco de dados .
Execute o seguinte comando no prompt mongosh
:
use sample_airbnb
switched to db sample_airbnb
Execute as seguintes query de pesquisa do Atlas Search usando o operador para o qual você criou o índice.
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' } ]
Conecte-se ao seu cluster no MongoDB Compass.
Abra o MongoDB Compass e conecte-se ao cluster. Para obter instruções detalhadas sobre a conexão, consulte Conectar via Compass.
Execute a seguinte query do Atlas Search utilizando o operador para o qual você criou o índice.
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 |
| |||||||
$limit |
| |||||||
$project |
|
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 |
| |||||||
$limit |
| |||||||
$project |
|
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 |
| |||||||||||||||||
$limit |
| |||||||||||||||||
$project |
|
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 |
| |||||||||||||||||
$limit |
| |||||||||||||||||
$project |
|
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 ]
Replace the contents of the Program.cs
file with the following code for the operator for which you created the index and the type of query you wish to run.
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
.
1 using MongoDB.Bson; 2 using MongoDB.Bson.Serialization.Attributes; 3 using MongoDB.Bson.Serialization.Conventions; 4 using MongoDB.Driver; 5 using MongoDB.Driver.Search; 6 7 public 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 [ ]43 public class matViewDocument 44 { 45 [ ]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.
1 using MongoDB.Bson; 2 using MongoDB.Bson.Serialization.Attributes; 3 using MongoDB.Bson.Serialization.Conventions; 4 using MongoDB.Driver; 5 using MongoDB.Driver.Search; 6 7 public 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 [ ]43 public class matViewDocument 44 { 45 [ ]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
.
1 using MongoDB.Bson; 2 using MongoDB.Bson.Serialization.Attributes; 3 using MongoDB.Bson.Serialization.Conventions; 4 using MongoDB.Driver; 5 using MongoDB.Driver.Search; 6 7 public 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 [ ]42 public class matViewDocument 43 { 44 [ ]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
.
1 using MongoDB.Bson; 2 using MongoDB.Bson.Serialization.Attributes; 3 using MongoDB.Bson.Serialization.Conventions; 4 using MongoDB.Driver; 5 using MongoDB.Driver.Search; 6 7 public 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 [ ]42 public class matViewDocument 43 { 44 [ ]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.
Compile e execute o Program.cs
arquivo .
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 }
Copie e cole o exemplo de código do operador para o qual você criou o índice no date-number-to-string-query.go
arquivo .
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
.
1 package main 2 3 import ( 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 func 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.
1 package main 2 3 import ( 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 func 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
.
1 package main 2 3 import ( 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 14 type MovieCollection struct { 15 title string `bson:"Title,omitempty"` 16 } 17 18 func 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
.
1 package main 2 3 import ( 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 14 type MovieCollection struct { 15 title string `bson:"Title,omitempty"` 16 } 17 18 func 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.
Execute o seguinte comando para consultar sua collection:
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 ]
Copie e cole o código do operador para o qual você criou o índice no DateNumberToStringQuery.java
arquivo .
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
.
1 import java.util.Arrays; 2 import static com.mongodb.client.model.Filters.eq; 3 import static com.mongodb.client.model.Aggregates.limit; 4 import static com.mongodb.client.model.Aggregates.project; 5 import static com.mongodb.client.model.Projections.excludeId; 6 import static com.mongodb.client.model.Projections.fields; 7 import com.mongodb.client.MongoClient; 8 import com.mongodb.client.MongoClients; 9 import com.mongodb.client.MongoCollection; 10 import com.mongodb.client.MongoDatabase; 11 import org.bson.Document; 12 13 public 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.
1 import java.util.Arrays; 2 import static com.mongodb.client.model.Filters.eq; 3 import static com.mongodb.client.model.Aggregates.limit; 4 import static com.mongodb.client.model.Aggregates.project; 5 import static com.mongodb.client.model.Projections.excludeId; 6 import static com.mongodb.client.model.Projections.fields; 7 import com.mongodb.client.MongoClient; 8 import com.mongodb.client.MongoClients; 9 import com.mongodb.client.MongoCollection; 10 import com.mongodb.client.MongoDatabase; 11 import org.bson.Document; 12 13 public 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
.
1 import java.util.Arrays; 2 import static com.mongodb.client.model.Filters.eq; 3 import static com.mongodb.client.model.Aggregates.limit; 4 import static com.mongodb.client.model.Aggregates.project; 5 import static com.mongodb.client.model.Projections.excludeId; 6 import static com.mongodb.client.model.Projections.fields; 7 import com.mongodb.client.MongoClient; 8 import com.mongodb.client.MongoClients; 9 import com.mongodb.client.MongoCollection; 10 import com.mongodb.client.MongoDatabase; 11 import org.bson.Document; 12 13 public 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
.
1 import java.util.Arrays; 2 import static com.mongodb.client.model.Filters.eq; 3 import static com.mongodb.client.model.Aggregates.limit; 4 import static com.mongodb.client.model.Aggregates.project; 5 import static com.mongodb.client.model.Projections.excludeId; 6 import static com.mongodb.client.model.Projections.fields; 7 import com.mongodb.client.MongoClient; 8 import com.mongodb.client.MongoClients; 9 import com.mongodb.client.MongoCollection; 10 import com.mongodb.client.MongoDatabase; 11 import org.bson.Document; 12 13 public 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.
Compile e execute o DateNumberToStringQuery.java
arquivo .
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 }
Copie e cole o código do operador para o qual você criou o índice no DateNumberToStringQuery.kt
arquivo .
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
.
1 import com.mongodb.client.model.Aggregates.limit 2 import com.mongodb.client.model.Aggregates.project 3 import com.mongodb.client.model.Projections.* 4 import com.mongodb.kotlin.client.coroutine.MongoClient 5 import kotlinx.coroutines.runBlocking 6 import org.bson.Document 7 8 fun 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.
1 import com.mongodb.client.model.Aggregates.limit 2 import com.mongodb.client.model.Aggregates.project 3 import com.mongodb.client.model.Projections.excludeId 4 import com.mongodb.client.model.Projections.fields 5 import com.mongodb.kotlin.client.coroutine.MongoClient 6 import kotlinx.coroutines.runBlocking 7 import org.bson.Document 8 9 fun 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
.
1 import com.mongodb.client.model.Aggregates.limit 2 import com.mongodb.client.model.Aggregates.project 3 import com.mongodb.client.model.Projections.* 4 import com.mongodb.kotlin.client.coroutine.MongoClient 5 import kotlinx.coroutines.runBlocking 6 import org.bson.Document 7 8 fun 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
.
1 import com.mongodb.client.model.Aggregates.limit 2 import com.mongodb.client.model.Aggregates.project 3 import com.mongodb.client.model.Projections.* 4 import com.mongodb.kotlin.client.coroutine.MongoClient 5 import kotlinx.coroutines.runBlocking 6 import org.bson.Document 7 8 fun 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.
Execute o DateNumberToStringQuery.kt
arquivo .
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}}
Copie e cole o código do operador para o qual você criou o índice no date-number-to-string-query.js
arquivo .
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 driverNode.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
.
1 const MongoClient = require("mongodb").MongoClient; 2 const assert = require("assert"); 3 4 const 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 22 MongoClient.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.
1 const MongoClient = require("mongodb").MongoClient; 2 const assert = require("assert"); 3 4 const 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 22 MongoClient.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 driverNode.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
.
1 const MongoClient = require("mongodb").MongoClient; 2 const assert = require("assert"); 3 4 const 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 33 MongoClient.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
.
1 const MongoClient = require("mongodb").MongoClient; 2 const assert = require("assert"); 3 4 const 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 33 MongoClient.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.
Execute o seguinte comando para consultar sua collection:
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 }
Copie e cole o exemplo de código do operador para o qual você criou o índice no date-number-to-string-query.py
arquivo .
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ódulodns
, que é necessário para conectarpymongo
aAtlas
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
.
1 import pymongo 2 import dns 3 4 client = pymongo.MongoClient('<connection-string>') 5 result = 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 23 for 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.
1 import pymongo 2 import dns 3 4 client = pymongo.MongoClient('<connection-string>') 5 result = 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 23 for 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ódulodns
, que é necessário para conectarpymongo
aAtlas
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
.
1 import pymongo 2 import dns 3 4 client = pymongo.MongoClient('<connection-string>') 5 result = 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 34 for 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
.
1 import pymongo 2 import dns 3 4 client = pymongo.MongoClient('<connection-string>') 5 result = 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 34 for 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.
Execute o seguinte comando para consultar sua collection:
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 }