MongoDB.Labs.Search
1.1.0
dotnet add package MongoDB.Labs.Search --version 1.1.0
NuGet\Install-Package MongoDB.Labs.Search -Version 1.1.0
<PackageReference Include="MongoDB.Labs.Search" Version="1.1.0" />
paket add MongoDB.Labs.Search --version 1.1.0
#r "nuget: MongoDB.Labs.Search, 1.1.0"
// Install MongoDB.Labs.Search as a Cake Addin #addin nuget:?package=MongoDB.Labs.Search&version=1.1.0 // Install MongoDB.Labs.Search as a Cake Tool #tool nuget:?package=MongoDB.Labs.Search&version=1.1.0
MongoDB C# Driver Extension for Atlas Search
This library is an extension to the MongoDB C# driver providing support for the
$search
stage used with Atlas Search. You can gain access to the extension
methods for Atlas search by adding a reference to the library in your project
and using the MongoDB.Labs.Search
namespace.
This repository is NOT a supported MongoDB product.
You can get the latest release from the NuGet feed or from the GitHub releases page.
Examples
C# Objects
Perform a search for C# objects, specifying field names as expression trees.
public class HistoricalDocument
{
[BsonId]
public ObjectId Id { get; set; }
[BsonElement("body")]
public string Body { get; set; }
[BsonElement("title")]
public string Title { get; set; }
[BsonElement("highlights")]
public List<Highlight> Highlights { get; set; }
[BsonElement("score")]
public double Score { get; set; }
}
List<HistoricalDocument> results = coll.Aggregate()
.Search(
SearchBuilders<HistoricalDocument>.Search
.Phrase("life, liberty, and the pursuit of happiness", x => x.Body, 5),
SearchBuilders<HistoricalDocument>.Highlight
.Options(x => x.Body))
.Limit(10)
.Project<HistoricalDocument>(
Builders<HistoricalDocument>.Projection
.Include(x => x.Title)
.Include(x => x.Body)
.MetaSearchHighlights("highlights")
.MetaSearchScore("score"))
.ToList();
BSON Documents
Perform a search for raw BSON documents, specifying field names as strings.
List<BsonDocument> results = coll.Aggregate()
.Search(
SearchBuilders<BsonDocument>.Search
.Phrase("life, liberty, and the pursuit of happiness", "body", 5),
SearchBuilders<BsonDocument>.Highlight
.Options("body"))
.Limit(10)
.Project<BsonDocument>(
Builders<BsonDocument>.Projection
.Include("title")
.Include("body")
.MetaSearchHighlights("highlights")
.MetaSearchScore("score"))
.ToList();
Autocomplete Operator
Search for instances of HistoricalDocument
in which the Body
field matches the autocomplete
query life, liber
.
List<HistoricalDocument> results = coll.Aggregate()
.Search(
SearchBuilders<HistoricalDocument>.Search
.Autocomplete("life, liber", x => x.Body, AutocompleteTokenOrder.Sequential))
.ToList();
Compound Operator
Search for instances of HistoricalDocument
in which the Body
field contains the text life
and liberty
but not property
.
List<HistoricalDocument> results = coll.Aggregate()
.Search(
SearchBuilders<HistoricalDocument>.Search
.Compound()
.Must(
SearchBuilders<HistoricalDocument>.Search
.Text("life", x => x.Body),
SearchBuilders<HistoricalDocument>.Search
.Text("liberty", x => x.Body))
.MustNot(
SearchBuilders<HistoricalDocument>.Search
.Text("property", x => x.Body)))
.ToList();
Equals Operator
Search for instances of Person
in which the Retired
field is set to true.
List<Person> results = coll.Aggregate()
.Search(
SearchBuilders<Person>.Search
.Eq(x => x.Retired, true))
.ToList();
Exists Operator
Search for instances of Person
in which the MiddleName
field exists.
List<Person> results = coll.Aggregate()
.Search(
SearchBuilders<Person>.Search
.Exists(x => x.MiddleName))
.ToList();
More Like This Operator
Search for instances of Person
similar to the specified instance.
List<Person> results = coll.Aggregate()
.Search(
SearchBuilders<Person>.Search
.MoreLikeThis(
new Person
{
FirstName = "John",
LastName = "Doe"
}))
.ToList();
Near Operator
Search for instances of Person
in which the Age
field is near 18 with a pivot of 1.
List<Person> results = coll.Aggregate()
.Search(
SearchBuilders<Person>.Search
.Near(x => x.Age, 18, 1))
.ToList();
Phrase Operator
Search for instances of HistoricalDocument
in which the Body
field contains the phrase
life, liberty, and the pursuit of happiness
.
List<HistoricalDocument> results = coll.Aggregate()
.Search(
SearchBuilders<HistoricalDocument>.Search
.Phrase("life, liberty, and the pursuit of happiness", x => x.Body))
.ToList();
Query String Operator
Search for instances of Person
matching the query string firstName:john lastName:doe
using
the FirstName
field as the default when no field is specified in the query string.
List<Person> results = coll.Aggregate()
.Search(
SearchBuilders<Person>.Search
.QueryString(x => x.FirstName, "firstName:john lastName:doe"))
.ToList();
Range Operator
Search for instances of Person
in which the Age
field is greater than or equal to 18 and less
than 21.
List<Person> results = coll.Aggregate()
.Search(
SearchBuilders<Person>.Search
.RangeInt32(x => x.Age).Gte(18).Lt(21))
.ToList();
The search operator functions RangeInt64
, RangeDouble
, and RangeDateTime
are also available
to perform range searches for their respective data types. Every range search must include a lower
bound using Gt
(greater than) or Gte
(greater than or equal to) and an upper bound using Lt
(less than) or Lte
(less than or equal to). The order of the bounds does not matter.
Regular Expression Operator
Search for instances of Person
in which the FirstName
field matches the regular expression
joh?n
.
List<Person> results = coll.Aggregate()
.Search(
SearchBuilders<Person>.Search
.Regex("joh?n", x => x.FirstName))
.ToList();
Regular expressions must be specified using the Lucene syntax.
Text Operator
Search for instances of HistoricalDocument
in which the Body
field contains the text
life, liberty, and the pursuit of happiness
.
List<HistoricalDocument> results = coll.Aggregate()
.Search(
SearchBuilders<Person>.Search
.Text(x => x.Body, "life, liberty, and the pursuit of happiness"))
.ToList();
Wildcard Operator
Search for instances of HistoricalDocument
in which the Body
field matches the wildcard string
happ*
.
List<HistoricalDocument> results = coll.Aggregate()
.Search(
SearchBuilders<HistoricalDocument>.Search
.Wildcard("happ*", x => x.Body))
.ToList();
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- MongoDB.Driver (>= 2.15.0)
-
.NETStandard 2.0
- MongoDB.Driver (>= 2.15.0)
-
.NETStandard 2.1
- MongoDB.Driver (>= 2.15.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
1.1.0 | 267,442 | 11/6/2022 | |
1.1.0-beta1 | 17,179 | 8/13/2022 | |
1.0.1-beta1 | 921 | 6/4/2022 | |
1.0.0 | 70,030 | 5/27/2022 | |
1.0.0-rc1 | 3,971 | 4/10/2022 | |
1.0.0-beta2 | 963 | 1/3/2022 | |
1.0.0-beta1 | 845 | 8/22/2021 |