NoSQLBooster 11.2 Released! MongoDB 9.0 Feature Support, Queryable Encryption Substring Queries, and Smarter Index Suggestions

We are pleased to announce the release of NoSQLBooster 11.2. Building on the MongoDB 9.0 connectivity and the mongosh-powered engine delivered in 11.1, this minor release adds first-class support for the new features of MongoDB 9.0 — Queryable Encryption prefix/suffix/substring queries (now generally available), per-command query settings, and more — with helper methods and inline documentation across both the fluent Pipeline API and the operator helper ($.). It also refreshes the embedded engine to mongosh 2.12.0 on the MongoDB Node.js driver 7.7.0, teaches the AI Chat panel which server version you are connected to, sharpens the slow-query (index suggestion) warnings, and fixes several issues reported by customers — including Amazon DocumentDB connections, Copy Collection filters, F6/Ctrl+F6 shortcut reassignment, and tree-view keyboard navigation.

If you want to try NoSQLBooster 11.2 out now, you can get it from the following link.

NoSQLBooster 11.2 Download Link

The product will automatically enter the 30-day trial mode after a successful installation. At the end of the 30-day trial period, the product becomes a free edition. The free version is free for personal/commercial use but with limited functions.

Let's dive in and get an overview of what's coming in NoSQLBooster 11.2!

What's new?

MongoDB 9.0 Feature Support

NoSQLBooster 11.1 opened the door to MongoDB 9.0 — version 11.1.6 added early connectivity ahead of the server's release, and 11.1.7 declared official support once it shipped. NoSQLBooster 11.2 goes further and supports what MongoDB 9.0 actually does: the new server-side capabilities are wired into the script editor, the fluent Pipeline API, and the $. operator helper, complete with inline code-completion documentation. See the MongoDB 9.0 release notes for the full server-side changelog.

Queryable Encryption Prefix, Suffix, and Substring Queries (Now GA)

MongoDB 9.0 marks the General Availability of prefix, suffix, and substring queries on encrypted string fields (previously a Public Preview in 8.2/8.3). All four supporting operators are now registered in NoSQLBooster, with helper methods and inline documentation:

Name Description NoSQLBooster Helper Method
$encStrStartsWith Matches an encrypted string field that starts with the specified prefix. $.encStrStartsWith({ input: "$employeeFirstName", prefix: "Sam" })
$encStrEndsWith Matches an encrypted string field that ends with the specified suffix. $.encStrEndsWith({ input: "$employeeFirstName", suffix: "son" })
$encStrContains Matches an encrypted string field that contains the specified substring. $.encStrContains({ input: "$employeeFirstName", substring: "am" })
$encStrNormalizedEq Performs a normalized equality match; case and diacritic sensitivity follow the field's text search index settings. $.encStrNormalizedEq({ input: "$employeeFirstName", string: "Sam" })
1
2
3
db.employees.aggregate([
{ $match: { $expr: { $encStrStartsWith: { input: "$employeeFirstName", prefix: "Sam" } } } }
])

Requirements and rules to keep in mind:

  • The encrypted field must be configured with the matching query type — queries: { queryType: "prefix" | "suffix" | "substring" } in its encryptedFields definition.
  • prefix and suffix may coexist on one field, but neither can be combined with substring on the same field.
  • substring fields also accept strMaxLength (on the indexed field), strMinQueryLength, strMaxQueryLength, and caseSensitive.
  • These queries require MongoDB 9.0+, a 9.0-compatible driver, and the Automatic Encryption Shared Library 9.0+ (extraOptions.cryptSharedLibPath).
  • The 8.2/8.3 Public Preview types (prefixPreview / suffixPreview / substringPreview) were removed in MongoDB 9.0 — preview collections cannot be migrated in place and must be re-created.

The In-Use Encryption template in the Connection Editor has been updated to reflect all of this: it now ships prefix / suffix / substring examples with their constraints, a preview→GA migration note, and an updated createEncryptedCollection script with MongoDB 9.0 hints.

Per-Command Query Settings (New in MongoDB 9.0)

Query settings were introduced in MongoDB 8.0 as cluster-wide settings tied to a query shape — for example to add index hints or reject specific operations — managed with setQuerySettings and inspected with the $querySettings aggregation stage. MongoDB 9.0 extends the model: settings can now be applied to a single execution of find, distinct, or aggregate by passing a querySettings document through runCommand, and the new queryKnobs and maxTimeMS settings (FCV 9.0+) let you override internal server parameters or set a maximum execution time per query shape.

1
2
3
4
5
6
7
8
9
10
11
12
// Per-execution settings — applies to this execution only, not stored on the cluster
db.runCommand({
find: "users",
filter: { status: "active" },
querySettings: { maxTimeMS: 5000 }
})

// Stored, cluster-wide settings for a query shape — queryKnobs and maxTimeMS are new in 9.0
db.adminCommand({
setQuerySettings: { find: "users", filter: { status: "active" } },
settings: { maxTimeMS: 5000, queryKnobs: { noTableScan: true } }
})

In the editor, the $querySettings stage is now available as a fluent Pipeline API method:

1
db.aggregate().querySettings({ showDebugQueryShape: true })

The inline documentation of find(), aggregate(), distinct(), and runCommand() now explains the MongoDB 9.0 per-execution query-settings form, and note that stored cluster settings take precedence for the same field.

Other MongoDB 9.0 Additions

  • $convert can produce binData from an object — the $.convert() helper and completion now document the new MongoDB 9.0 conversion. (Views using this conversion return an error if the server is later downgraded.)
  • mongocryptd is deprecated in MongoDB 9.0 — the encryption template now flags mongocryptdSpawnPath as deprecated and points to cryptSharedLibPath instead.
  • $queryStats output reorganized — the stage's documentation reflects the new MongoDB 9.0 layout: results are grouped under metrics.cursor, metrics.queryExec, metrics.queryPlanner, and metrics.writes; stats now also cover update / insert / delete query shapes and are collected by default (about 1% sampling).

Server-Aware AI Chat

The AI Chat panel now knows which MongoDB server you are working against. The server version of the current connection (read from the connection handshake, e.g. 4.0.28) is passed to the chat service, which uses it as a compatibility constraint when generating queries, scripts, and explanations — so the answers match the server you actually have, instead of suggesting syntax from a version you don't. When there is no active connection or the version cannot be determined, nothing is sent and the behavior is unchanged.

Alongside, the chat component received fixes for .collection handling in generated scripts and for a false read-only detection.

Updated Platform and Engine

NoSQLBooster 11.2 moves to a newer Electron runtime and keeps the embedded shell in step with the latest mongosh release.

Component Version 11.1 Version 11.2
Electron 43.1 43.7.5
Chromium 150 150
Node.js 24.x 24.21
Embedded mongosh 2.9.2 2.12.0
MongoDB Node.js Driver 7.4 7.7
BSON 7.2 7.2
OIDC Plugin 2.2.0 2.2.0

The newer runtime carries an upstream c-ares fix that improves DNS/SRV resolution on Windows, and the refreshed engine and driver stack (mongosh 2.12.0 / driver 7.7.0) has been verified against the entire supported server range — MongoDB 3.6 through 9.0.

Bug Fixes

  • Fixed, slow-query warnings ("This query will be slow" / index suggestions) — several false positives and missed warnings reported by customers have been resolved:

    • Indexed _id exact queries could be flagged as "ran without an index" when the connection's saved database differed from the database in use, because the cloned probe connection landed on the wrong database. Probes now always run against the database the script actually uses — which also fixes missed warnings for scripts that target another database via getSiblingDB.
    • A find whose filter fields are unindexed but which sorts by { _id: -1 } (served by the _id index) could slip through silently. Plan evaluation is now followed by a scan-volume check: when a plan uses an index but must scan a large share of the collection, the warning is raised as expected.
    • Probe timeouts (ok: 0 / MaxTimeMSExpired during the execution-stats phase) are no longer treated as "nothing to report".
  • Fixed, connections to Amazon DocumentDB — an explicit authMechanism=SCRAM-SHA-1 (or SCRAM-SHA-256) in the connection string was being stripped before connecting, so DocumentDB refused the handshake with "Unsupported mechanism [-301]". Explicit SCRAM mechanisms are now passed to the driver unchanged; auto-negotiation is still used when no mechanism is specified.

  • Fixed, F6 / Ctrl+F6 shortcut reassignment clearing other bindings — after a shortcut was moved from its default key to another (for example moving "Run Current Statement" from F6 to Ctrl+F6), the "release the old key" step could clear a binding that another command had just been given in the same batch, so the result depended on save order. Rebinding is now two-phase — all old keys are released first, then the new keys are claimed — so conflicting reassignments apply correctly regardless of order.

  • Fixed, Copy Collection ignoring its filter — when a collection was copied with a query/projection, the $out fast path performed a full copy instead of a filtered one (only the batched path honored the filter), and the reported inserted count did not reflect the filter. Filters are now applied on both paths, and the counts match the filtered result.

  • Fixed, tree-view keyboard navigation — the "keyboard friendly tree views" behavior lost during the Vue3 rewrite has been restored in both the result view's tree mode and the object tree: ← collapses an expanded node or jumps to the nearest parent; → expands a collapsed node (otherwise keeps the existing column-move behavior).

Thank you!

Please visit our feedback page or click the “Feedback” button in the app. Feel free to suggest improvements to our product or service. Users can discuss your suggestion and vote for and against it. We’ll look at it too.