Database
276 results found
-
Low latency Change Stream for Global Cluster in Atlas
our event-driven applications need to publish events to Kafka triggered by Change Stream feature. It works perfect in replicaset MongoDB cluster.
However, after migrating to Global Cluster in Atlas, the Change Stream cannot keep low latency because of ordering reason among shards.
The latency may go up to 20 seconds when for a single change event.It would be nice if application can receive Change Stream from the single shard only (not care about ordering among shards) to prevent latency.
The idea is to pass "location" options when starting the Change Stream cursor.
3 votes -
updateMany limit
When porting an application backend from an RDBMS to MongoDB, we've spoken to two people who've are looking for a way to specify a limit on the number of documents in .updateMany(). I understand the behavior cannot be defined on a sharded cluster, but if we had a way to do this on an unsharded collection, that would help when dealing with these teams.
3 votes -
Option to prohibit a non-voting member from becoming a sync source of a voting member
Hi,
Our proposition in a few words: add a replica set option to allow chained replication but with the following exception: a non-voting member cannot become a sync source of a voting member under any circumstance.
This proposition would allow chained replication for clusters having both w=majority writes and analytics nodes.
Right now, those clusters cannot safely enable chained replication, because under some circumstances, the non-voting analytics member may become the first secondary in a serial chain of replication. In that case, this node[*] slows down the replication process for all downstream secondaries. Higher replication lag translates to extremely slow…
3 votes -
Include schema validation events in changestream payload
let's say my document has JSON schema validation like:
{ $jsonSchema: { properties: { phone: { bsonType: 'string' } } } }
and the validation action is set to "warning", if I do a command like: db.test.insert({"phone":1}), I would like the warning message to be included in my change stream.
3 votes -
geoIntersects feature for 2D index
At Airbus, we would like to use geoIntersects feature with 2D Index.
We don't need 2DSphere Index, but we have to use it if we want to have geoIntersects avalaible.
As a consequence, we have to manage Spherical margins which introduces a useless and hard to maintain workaround in our product.
Could you please plan to implement geoIntersects and not only geoWithin with 2D Index ?
Thank you3 votes -
Automatic Indexes
MongoDB can already suggest useful indexes. Why not take the next step and allow MongoDB to autonomously create and manage indexes. Ideally it will automatically maintain the indexes over time as the structure and usage of the database changes.
3 votes -
Providing connection details with username for real time connection monitoring.
Currently, mongd.log provides connection details like remote IP, source port with authentication information but doesn't provide the connection is in active state or not.
serverStatus() only provides number of current and active connections.Example:
10.0.0.100:12345 - username active
10.0.0.101:12346 - username idle2 votes -
Change Timeseries Bucket Memory Limit
Currently, there's no way to set a memory threshold for bucket allocation in MongoDB's time series collections. As the bucket size increases and more collections are opened day after day, a limiting mechanism triggers for open buckets, leading to cache pressure and the premature closing of buckets under high load. It would be beneficial for users to have the ability to set a memory threshold for the timeseries bucket memory limit ( I guess limit is around 3GB). It enabling us to prevent early bucket closure in production environments. Alternatively, providing the option to manually close buckets could help manage…
2 votes -
Include or flag nodes seen more than once / duplicates when traversing with $graphLookup
When traversing a graph with $graphLookup, we suppress duplicates (in cases of cycles). It would be useful to have an option to include a flag indicating a node that caused the traversal to stop due to duplication.
2 votes -
support parallel query executions include find(), aggregation()
To use multi-core environment and enhance the query performance w/ a large amount of documents, need a parallel execution.
Sharding or microsharding is not an alternative in this case.2 votes -
TTL index throttling for deletion
To avoid deletion impact, we need to control the quantity and speed of document generations(insert).
Need a way to throttle down the deletion quantity per a delete operation.i.e. # of documents per a ttl delete, sleep time between deletions(default 60s)
2 votes -
Improve Changestream metadata by including userId(who), action/intent (event name).
This can be done by including meta data in the options for C(R)UD operations!
Something like:User.updateOne({ _id }, { $set: { name: "newName" } }, { $meta: { userId: _id, action: "nameUpdated" })
This is super useful because now changestream can be used to create event store or audit logs, out of the box. I just have to store all the changestream events from the relevant collections. This also makes event driven architecture in micro services super useful. Developers can use this to publish events directly to a message broker such as kafka, where action would be equivalent to…
2 votes -
I just wanted to say Good job!!!
Appreciation
2 votes -
Tool for score data model
It would be great to have a tool which can scores a data model from a specific database. I mean, I could allows this tool to scan a database model and score this data model based on best practices, patterns and anti patterns. It could also generates a list of problems and suggestions for improvement.
This tool could be used on CI pipelines near to the unit tests and the main goal is to avoid release new features using a bad data model.
2 votes -
Flatten arrays in group stage
Have group operators to flatten document arrays into a single one with or without repeated elements.
So ->
doc1 = {arr: [1,2,3,4], gr: "group"}, doc2 = {arr: [5, 6, 7, 8], gr: "group"}
{$group: {id: "$gr", arrays: {$***: "$arr"} } }
=>
{id: "gr", arrays: [1, 2, 3, 4, 5, 6, 7, 8]}2 votes -
$merge
Report number of docs matched, merged, skipped, etc. from a $merge stage. Alternatively, return the merged doc results as a pipeline result to pass to additional stages.
2 votes -
geo
It would be nice to get the length of an LineString of a geo-json object or the possibility to write an aggregation to calculate it.
2 votes -
Query Planner needs a timeOut set as a Database parameter.
Query Planner needs a timeOut set as a Database parameter.
We see App queries timing out on Query planner taking >1 sec. Whilst this can be avoided by setting maxTimeMS at client end - this is more of a setting for the overall query and not just the query planner - Also, this comes at the risk of closing/timing out the actual query (cursor) which is not our need.
We only want the query planner itself to have a specific - set/customisable timeout and the query to keep running selecting one/any if the plans run thus far without timing out…
2 votes -
We need to be able to use $[<identifier>] and "$setOnInsert" in the same command
I want to be able to have a maintain array of counters for a user through a single update statement. If the document containing array of counters does not exist, I want to add it. If it does exist, I want to increment the counter
For example, this command
…
db.inboxItemCounts.updateOne(
// filter
{
"userId": userDoc.userId
},
// update
{
"$setOnInsert": {
"userId": userDoc.userId,
"fromUserSummary": [{
"userName": fromUserDoc.userName,
"count": 1
}]
},
// "$inc": incBody,
"$inc": {
"fromUserSummary.$[userElement].count": 1
}
},
// options
{
"upsert": true,
"writeConcern": { "w": "majority" },
"arrayFilters": [
{ "userElement.userName": { $eq: fromUserDoc.userName }}
]
}2 votes -
hint support for $graphLookup
Currently you can supply a
hint
to theaggregation
call in order to tell MongoDB to use a specific index for the initial$match
. But there is currently no way to specify which index to use for a$graphLookup
later in the pipeline.I would like an optional
hint
property on the$graphLookup
stage.2 votes
- Don't see your idea?