www.mongodb.com
Open in
urlscan Pro
2600:9000:2490:600:7:7859:3840:93a1
Public Scan
Submitted URL: https://dochub.mongodb.org/core/legacy-opcode-removal
Effective URL: https://www.mongodb.com/docs/v6.0/release-notes/6.0-compatibility/
Submission: On August 30 via api from US — Scanned from DE
Effective URL: https://www.mongodb.com/docs/v6.0/release-notes/6.0-compatibility/
Submission: On August 30 via api from US — Scanned from DE
Form analysis
2 forms found in the DOMGET https://mongodb.com/docs/search/
<form role="search" method="GET" action="https://mongodb.com/docs/search/" class="css-dc0gsv">
<div class="css-1q5aj3">
<div class="css-36i4c2"><input type="text" placeholder="Search all documentation..." class="css-etrcff" value=""></div>
<div class="css-1hc92ka">
<div class="css-aef77t"><button role="button" type="button" class="css-14k7wrz"><span data-testid="selected-value" class="css-6k4l2y">All Documentation</span>
<div class="css-109dpaz"><svg data-testid="icon" width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg" class="css-1yzkxhp">
<path d="M1.06689 0.799988L8.00023 7.73332L14.9336 0.799988" stroke-linecap="round" stroke-linejoin="round" class="css-1tlq8q9"></path>
</svg></div>
</button>
<div class="css-hn9qqo">
<ul data-testid="options" role="listbox" class="css-ac9zo2">
<li role="option" tabindex="0" class="css-11dtrvq">General Information</li>
<li role="option" tabindex="0" class="css-11dtrvq">All Documentation</li>
<li role="option" tabindex="0" class="css-11dtrvq">Realm Documentation</li>
<li role="option" tabindex="0" class="css-11dtrvq">Developer Articles & Topics</li>
<li role="option" tabindex="0" class="css-11dtrvq">Community Forums</li>
<li role="option" tabindex="0" class="css-11dtrvq">Blog</li>
<li role="option" tabindex="0" class="css-11dtrvq">University</li>
</ul>
</div>
</div><input type="hidden" id="q" name="q" value=""><input type="hidden" id="searchProperty" name="searchProperty" value="manual-v6.0">
<div class="css-1myrko"><button type="submit" tabindex="0" class=" css-13l1z36" data-track="true"><img alt="search icon" src="https://webimages.mongodb.com/_com_assets/cms/krc3hljsdwdfd2w5d-web-actions-search.svg?auto=format%252Ccompress"
class="css-r9fohf"></button></div>
</div>
</div>
</form>
GET https://mongodb.com/docs/search/
<form role="search" method="GET" action="https://mongodb.com/docs/search/" class="css-11a71ad">
<div class="css-7590ag"><input type="text" placeholder="Search all documentation..." class="css-xrkki1" value=""></div>
<div class="css-itzitu"><select class="select-overlay css-15v6p12" id="filter-select">
<option value="General Information">General Information</option>
<option value="All Documentation" selected="">All Documentation</option>
<option value="Realm Documentation">Realm Documentation</option>
<option value="Developer Articles & Topics">Developer Articles & Topics</option>
<option value="Community Forums">Community Forums</option>
<option value="Blog">Blog</option>
<option value="University">University</option>
</select><input type="hidden" id="q" name="q" value=""><input type="hidden" id="searchProperty" name="searchProperty" value="manual-v6.0">
<div class="css-1myrko"><button type="submit" tabindex="0" class=" css-31biy7" data-track="true">Search</button></div>
</div>
</form>
Text Content
All Documentation * General Information * All Documentation * Realm Documentation * Developer Articles & Topics * Community Forums * Blog * University * Products Atlas→ Developer data platform -------------------------------------------------------------------------------- Enterprise Advanced→ Enterprise software and support -------------------------------------------------------------------------------- Community Edition→ Free software used by millions -------------------------------------------------------------------------------- * Database→ * Search→ * Vector Search→ * Stream Processing→ * Data Lake (Preview)→ * Charts→ * Device Sync→ * APIs, Triggers, Functions→ * Enterprise Server→ * Ops Manager→ * Enterprise Kubernetes Operator→ * Community Server→ * Cloud Manager→ * Community Kubernetes Operator→ Tools→ Build faster -------------------------------------------------------------------------------- * Compass→ * Shell→ * VS Code Plugin→ * Atlas CLI→ * Database Connectors→ * Cluster-to-Cluster Sync→ * Mongoose ODM Support→ * Relational Migrator→ * Solutions By Industry -------------------------------------------------------------------------------- By Use Case -------------------------------------------------------------------------------- * Financial Services→ * Telecom→ * Healthcare→ * Retail→ * Public Sector→ * Manufacturing→ * All Industries→ * Analytics→ * Artificial Intelligence→ * Internet of Things→ * Mobile→ * Payments→ * Serverless Development→ * All Use Cases→ Developer Data Platform Innovate fast at scale with a unified developer experience Learn More -------------------------------------------------------------------------------- White Papers & Presentations Webinars, white papers, datasheets and more View All * Resources Documentation→ -------------------------------------------------------------------------------- * Atlas→ * Server→ * Drivers→ * Develop Applications→ * Launch and Manage MongoDB→ * View and Analyze→ * Start with Guides→ Community -------------------------------------------------------------------------------- Education -------------------------------------------------------------------------------- * Developer Center→ * Events & Webinars→ * Forums→ * Champions→ * Find a User Group→ * University→ * Certification→ * Academia→ * Intro to MongoDB Course→ * Browse All Courses→ * Company About -------------------------------------------------------------------------------- Services -------------------------------------------------------------------------------- Partnerships -------------------------------------------------------------------------------- * Who We Are→ * Customer Stories→ * Blog→ * Careers→ * Pressroom→ * Leadership→ * Investors→ * MongoDB Ventures→ * Consulting→ * Training→ * Customer Support→ * Customer Success→ * Partner Ecosystem→ * MongoDB for Startups→ * Pricing Sign In Try Free General InformationAll DocumentationRealm DocumentationDeveloper Articles & TopicsCommunity ForumsBlogUniversity Search Docs Menu MongoDB Documentation -------------------------------------------------------------------------------- Back to Develop Applications * MongoDB Manual 6.0 * Introduction * Installation * MongoDB Shell (mongosh) * MongoDB CRUD Operations * Aggregation Operations * Data Models * Indexes * Security * Replication * Sharding * Change Streams * Time Series * Transactions * Administration * Storage * Frequently Asked Questions * Reference * Release Notes * Release Notes for MongoDB 6.0 * Compatibility Changes in MongoDB 6.0 * Downgrade 6.0 to 5.0 * Upgrade 5.0 to 6.0 * 6.0 Changelog * Release Notes for MongoDB 5.3 * Release Notes for MongoDB 5.2 * Release Notes for MongoDB 5.1 * Release Notes for MongoDB 5.0 * Release Notes for MongoDB 4.4 * Release Notes for MongoDB 4.2 * Release Notes for MongoDB 4.0 * Release Notes for MongoDB 3.6 * Release Notes for MongoDB 3.4 * Release Notes for MongoDB 3.2 * Release Notes for MongoDB 3.0 * Release Notes for MongoDB 2.6 * Release Notes for MongoDB 2.4 * Release Notes for MongoDB 2.2 * Release Notes for MongoDB 2.0 * Release Notes for MongoDB 1.8 * Release Notes for MongoDB 1.6 * Release Notes for MongoDB 1.4 * Release Notes for MongoDB 1.2.x * MongoDB Versioning * Technical Support * Docs Home → Develop Applications → MongoDB Manual COMPATIBILITY CHANGES IN MONGODB 6.0 On this page * Aggregation * Change Streams * Indexes * Legacy mongo Shell Removed * Platform Support * Regular Expressions * Removed Operators * Removed Options * Removed Parameters * TTL expireAfterSeconds Behavior When Set to NaN * Replica Sets * Security * Time Series Collections * General Changes * Downgrade Considerations * Server Parameters This page describes changes introduced in MongoDB 6.0 that can affect compatibility with older versions of MongoDB. MongoDB 6.0 is a Major Release, which means that it is supported for both MongoDB Atlas and on-premises deployments. MongoDB 6.0 includes changes introduced in MongoDB Rapid Releases 5.1, 5.2, and 5.3. This page describes compatibility changes introduced in those Rapid Releases and MongoDB 6.0. To learn more about the differences between Major and Rapid releases, see MongoDB Versioning. AGGREGATION ALLOWDISKUSE CHANGES Starting in MongoDB 6.0, pipeline stages that require more than 100 megabytes of memory to execute write temporary files to disk by default. In earlier verisons of MongoDB, you must pass { allowDiskUse: true } to individual find and aggregate commands to enable this behavior. Individual find and aggregate commands may override the allowDiskUseByDefault parameter by either: * Using { allowDiskUse: true } to allow writing temporary files out to disk when allowDiskUseByDefault is set to false * Using { allowDiskUse: false } to prohibit writing temporary files out to disk when allowDiskUseByDefault is set to true $$SEARCH_META LIMITATIONS Starting in MongoDB 6.0, the Atlas Search $$SEARCH_META aggregation variable can be used anywhere after a $search stage in any pipeline, but it cannot be used after the $lookup or $unionWith stage in any pipeline. The $$SEARCH_META aggregation variable cannot be used in any subsequent stage after a $searchMeta stage. CHANGE STREAMS ORPHAN DOCUMENTS Starting in MongoDB 5.3, during range migration, change stream events are not generated for updates to orphaned documents. RESUME TOKENS Starting in MongoDB 6.0.9, resume tokens created by change stream pipelines with the new $changeStreamSplitLargeEvent stage are incompatible with MongoDB 5.0. For details about resume tokens, see Resume Tokens. FILTERS Starting in MongoDB 6.0, whenever possible, match filters are applied to change streams earlier than in prior releases. This improves performance. However, when a filter is narrowly defined, an earlier match may cause an operation that succeeds in prior versions to fail in 6.0. INDEXES LAST REMAINING SHARD KEY INDEX CANNOT BE DROPPED INADVERTENTLY Starting in MongoDB 6.0, passing "*" to dropIndexes or db.collection.dropIndexes() drops all indexes except for the _id index and the last remaining shard key index, if one exists. Attempts to explicitly drop the last remaining shard key index raise an error. EXISTING INDEXES CAN BE DROPPED DURING AN INDEX BUILD Starting in MongoDB 5.2, you can use dropIndexes or db.collection.dropIndexes() to drop existing indexes on the same collection even if there is an index build in progress. In earlier versions, attempting to drop a different index during an in-progress index build results in a BackgroundOperationInProgressForNamespace error. 2DSPHERE DOCUMENT INDEX KEYS To prevent out of memory errors, indexMaxNumGeneratedKeysPerDocument limits the maximum number of 2dsphere index keys generated for a single document. See indexMaxNumGeneratedKeysPerDocument. INDEX KEY FORMAT Starting in MongoDB 6.0, a change to the unique index key format was introduced. If you create a unique index in MongoDB 6.0, the index won't work with MongoDB versions earlier than 5.3.2 or 5.0.7. LEGACY MONGO SHELL REMOVED The mongo shell is removed from MongoDB 6.0. The replacement is mongosh. PLATFORM SUPPORT Starting in MongoDB 5.1.2 the following platforms are no longer supported: COMMUNITY EDITION * RHEL-72-s390x REGULAR EXPRESSIONS $REGEX FIND QUERIES NO LONGER IGNORE INVALID REGEX Starting in MongoDB 5.1, invalid $regex options options are no longer ignored. This change makes $regex options more consistent with the use of $regex in the aggregate command and projection queries. $REGEX SCHEMA VALIDATION ERROR BEHAVIOR Starting in MongoDB 5.1, if a collection has schema validation rules that contain invalid $regex options the server: * Prevents all insert and update operations until the schema validation rules containing the invalid regex pattern are modified with the collMod command. * Writes a warning error to the mongod log file. REMOVED OPERATORS Starting in MongoDB 5.1, these legacy query operators are removed: Removed Operator Alternative $comment cursor.comment() $explain cursor.explain() $hint cursor.hint() $max cursor.max() $maxTimeMS cursor.maxTimeMS() $min cursor.min() $orderby cursor.sort() $query See Cursor Methods $returnKey cursor.returnKey() $showDiskLoc cursor.showRecordId() db.getLastError() See Legacy Opcodes Removed db.getLastErrorObj() See Legacy Opcodes Removed getLastError See Legacy Opcodes Removed REMOVED OPTIONS MongoDB 6.0 removes the --cpu mongod option. REMOVED PARAMETERS MongoDB 6.0 removes the following server parameters: Removed Parameter Description --tlsFIPSMode This option is removed from the MongoDB Community Edition. It is available in MongoDB Enterprise edition. FIPS was not a supported feature in MongoDB Community Edition. If your installation made use of FIPS anyway, you will need to reconfigure your TLS/SSL connections before upgrading. TTL EXPIREAFTERSECONDS BEHAVIOR WHEN SET TO NAN Setting TTL expireAfterSeconds to NaN experiences a behavior change from MongoDB 4.4 to MongoDB 6.0 that affects initial sync from MongoDB 4.4 and earlier and mongorestore from MongoDB 4.4 and earlier. Performing any of those actions causes an expireAfterSeconds of NaN to be treated as an expireAfterSeconds of 0. Immediate document expiration may occur as a result. REPLICA SETS ASSERT CLUSTER WIDE WRITE CONCERN IS SET WHEN STARTING OR ADDING SHARD Starting in MongoDB 5.1, when starting, restarting or adding a shard server with sh.addShard() the Cluster Wide Write Concern (CWWC) must be set. If the CWWC is not set and the shard is configured such that the default write concern is { w : 1 } the shard server will fail to start or be added and returns an error. See default write concern calculations for details on how the default write concern is calculated. RS.RECONFIG CLUSTER WIDE WRITE CONCERN VALIDATION Starting in MongoDB 5.1, you must set the Cluster Wide Write Concern (CWWC) prior to issuing any reconfigs that would otherwise change the default write concern of the new replica set member. SECURITY INTRA-CLUSTER AUTHENTICATION Starting in MongoDB 5.3, SCRAM-SHA-1 cannot be used for intra-cluster authentication. Only SCRAM-SHA-256 is supported. In previous MongoDB versions, SCRAM-SHA-1 and SCRAM-SHA-256 can both be used for intra-cluster authentication, even if SCRAM is not explicitly enabled. FIPS MODE DEFAULTS SCRAM-SHA-1 AUTHENTICATION TO OFF Starting in MongoDB 5.1, instances running in FIPS mode have the SCRAM-SHA-1 authentication mechanism disabled by default. You can enable the SCRAM-SHA-1 authentication mechanism with the setParameter.authenticationMechanisms command. This change will not affect drivers which target MongoDB setFeatureCompatibilityVersion 4.0+. TIME SERIES COLLECTIONS WARNING If you create a sharded time series collection in MongoDB 5.1 or greater, downgrading to a version older than MongoDB 5.0.4 will result in data loss. Before downgrading to a version older than 5.0.4, drop all sharded time series collections. SECONDARY INDEXES ON TIME SERIES COLLECTIONS If there are secondary indexes on time series collections and you need to downgrade the feature compatibility version (FCV), you must first drop any secondary indexes that are incompatible with the downgraded FCV. See setFeatureCompatibilityVersion. GENERAL CHANGES DEPRECATIONS Deprecated Description db.collection.reIndex() The db.collection.reIndex() method is deprecated in MongoDB v6.0. reIndex The reIndex command is deprecated in MongoDB v6.0. Simple Network Management Protocol (SNMP) Starting in MongoDB 6.0, SNMP is deprecated and will be removed in the next release. To monitor your deployment, use MongoDB Ops Manager. $MOD ERROR BEHAVIOR Starting in MongoDB 5.1 (and 5.0.4 and 4.4.10), the $mod operator returns an error if the divisor or remainder values evaluate to certain values. See $mod behavior. LEGACY OPCODES REMOVED MongoDB 6.0 removes support for the following legacy opcodes and database commands: * OP_INSERT * OP_DELETE * OP_UPDATE * OP_KILL_CURSORS * OP_GET_MORE * OP_QUERY * getLastError WARNING UPGRADE DRIVERS To avoid disruption due to the removal of these opcodes, upgrade your driver to the latest version. If your drivers use legacy opcodes that were deprecated in v3.6, update your drivers to a version that uses supported opcodes. Drivers that use legacy opcodes are no longer supported. If you attempt to connect to a MongoDB 3.4 or older mongod instance with a MongoDB 5.1 or newer mongo shell, you will receive an error message like the following: Connection handshake failed. Is your mongod 3.4 or older?:: caused by :: network error while attempting to run command'isMaster' on host '127.0.0.1:27017' MONGOD RESPONSES TO LEGACY OPCODES Since MongoDB 3.6, MongoDB drivers have used OP_MSG instead of OP_QUERY and the other legacy opcodes and commands. Starting in MongoDB 6.0: * mongod will close the connection and will not respond to: * OP_INSERT * OP_DELETE * OP_UPDATE * OP_KILL_CURSORS * mongod will keep the connection open and return an error for: * The getLastError database command * OP_GET_MORE * OP_QUERY finds * Most OP_QUERY RPC command messages NOTE OP_QUERY RPC COMMANDS The OP_QUERY RPC protocol may be used with the following commands: * _isSelf * authenticate * buildinfo * buildInfo * hello * ismaster * isMaster * saslContinue * saslStart All other commands will be rejected if issued as OP_QUERY. REMOVED DEPRECATED ARRAY AND STRING FUNCTIONS FOR SERVER-SIDE JAVASCRIPT MongoDB 6.0 upgrades the internal JavaScript engine used for server-side JavaScript, $accumulator, $function, and $where expressions and from MozJS-60 to MozJS-91. Several deprecated, non-standard array and string functions that existed in MozJS-60 are removed in MozJS-91. For the complete list of removed array and string functions, see the next sections on this page. NOTE ONLY STATIC FUNCTIONS ARE REMOVED Only static JavaScript functions are removed. Prototype function equivalents of the removed functions can still be used. For example: * Array.concat(<array1>, <array2>) is a static function and no longer works in MongoDB 6.0. * <array1>.concat(<array2>) is a prototype function and still works in MongoDB 6.0. This behavior applies to both removed array and removed string functions. REMOVED ARRAY FUNCTIONS Starting in MongoDB 6.0, the following array functions are removed and cannot be used in server-side JavaScript with $accumulator, $function, and $where expressions: * Array.concat * Array.every * Array.filter * Array.forEach * Array.indexOf * Array.join * Array.lastIndexOf * Array.map * Array.pop * Array.push * Array.reduce * Array.reduceRight * Array.reverse * Array.shift * Array.slice * Array.some * Array.sort * Array.splice * Array.unshift REMOVED STRING FUNCTIONS Starting in MongoDB 6.0, the following array functions are removed and cannot be used in server-side JavaScript with $accumulator, $function, and $where expressions: * String.charAt * String.charCodeAt * String.concat * String.contains * String.endsWith * String.includes * String.indexOf * String.lastIndexOf * String.localeCompare * String.match * String.normalize * String.replace * String.search * String.slice * String.split * String.startsWith * String.substr * String.substring * String.toLocaleLowerCase * String.toLocaleUpperCase * String.toLowerCase * String.toUpperCase * String.trim * String.trimLeft * String.trimRight DEFAULT DB.STATS() SETTINGS Starting in MongoDB 6.0, the dbStats command and the db.stats() method only report free space assigned to collections if the freeStorage parameter is set to 1. INDEX FILTERS AND COLLATIONS Starting in MongoDB 6.0, an index filter uses the collation previously set using the planCacheSetFilter command. ARRAYS IN COLLECTIONS AND VIEWS WITH DISTINCT COMMAND Starting in MongoDB 6.0, the distinct command returns the same results for collections and views when using arrays. See Arrays in Collections and Views. DOWNGRADE CONSIDERATIONS The following sections provide information for removing backward-incompatible features from your deployment. If you are downgrading from MongoDB 6.0 to an earlier version, review the following sections to ensure that your deployment runs successfully after downgrading. CLUSTERED COLLECTIONS Starting in MongoDB 5.3, if you are using clustered collections, you must drop those collections before you can downgrade to an earlier MongoDB version. USER WRITE BLOCKING Starting in MongoDB 6.0, if you need to downgrade the feature compatibility version, ensure you disable cluster-to-cluster replication and user write blocking. See Cluster-to-Cluster Sync and User Write Blocking. TIME SERIES COLLECTIONS You must drop time series collections before downgrading: * MongoDB 6.0 or later to MongoDB 5.0.7 or earlier. * MongoDB 5.3 to MongoDB 5.0.5 or earlier. See Time Series Collections. CLUSTER PARAMETERS Starting in MongoDB 6.0, ensure that all setClusterParameter operations have completed. fCV downgrade cannot occur successfully if there are any ongoing setClusterParameter operations on sharded clusters. SELINUX POLICY DATA Starting in MongoDB 5.1, you must run the following command from the directory into which the SELinux policy was previously cloned before you can downgrade to an earlier MongoDB version: sudo make uninstall See: * Configure SELinux Policy Data Directory * Configure Enterprise SELinux Policy Data Directory KEY MANAGEMENT INTEROPERABILITY PROTOCOL (KMIP) SETTINGS Starting in MongoDB 5.3 Enterprise, if you are using the following KMIP settings, you must remove them from the configuration file before you can downgrade to an earlier MongoDB version: * security.kmip.keyStatePollingSeconds * security.kmip.activateKeys TIME-BASED RETENTION OF CHANGE STREAMS PRE- AND POST-IMAGE COLLECTIONS Starting in MongoDB 6.0, if you are using changeStreamOptions.preAndPostImages.expireAfterSeconds to control time-based retention of change streams pre- and post-image collections, you must ensure there are no active setClusterParameter operations when downgrading. AUDIT LOG ENCRYPTION SETTINGS Starting in MongoDB 6.0 Enterprise, if you are using audit log encryption, you must remove the following settings from the configuration file before you can downgrade to an earlier MongoDB version: * auditLog.auditEncryptionKeyIdentifier * auditLog.localAuditKeyFile Existing encrypted audit logs remain encrypted, and you can keep any procedures you have developed for storage and processing of encrypted logs. See Audit Log. CHANGE STREAMS WITH DOCUMENT PRE- AND POST-IMAGES Starting in MongoDB 6.0, if you are using document pre- and post-images for change streams, you must disable changeStreamPreAndPostImages for each collection using the collMod command before you can downgrade to an earlier MongoDB version. CHANGE STREAMS WITH EXPANDED EVENTS If your application uses change streams, ensure that it does not require the showExpandedEvents option, which will not be available after downgrade. LDAP WITH SRV: AND SRV_RAW: If your cluster's configuration is using the new "srv:" or "srv_raw:" URL types in its LDAP configuration, it will be unable to restart after a downgrade. Remove the new URL types from your cluster's configuration before or downgrading. COLLECTIONS WITH ENCRYPTED FIELDS You must drop collections that use encrypted fields before you can complete the fCV downgrade. The downgrade will not complete if there are collections using encryptedFields. SERVER PARAMETERS Starting in MongoDB 6.0 and 5.0.10 the default value for coordinateCommitReturnImmediatelyAfterPersistingDecision is false. ← Release Notes for MongoDB 6.0Downgrade 6.0 to 5.0 → On this page * Aggregation * Change Streams * Indexes * Legacy mongo Shell Removed * Platform Support * Regular Expressions * Removed Operators * Removed Options * Removed Parameters * TTL expireAfterSeconds Behavior When Set to NaN * Replica Sets * Security * Time Series Collections * General Changes * Downgrade Considerations * Server Parameters Share Feedback © 2023 MongoDB, Inc. About * Careers * Investor Relations * Legal Notices * Privacy Notices * Security Information * Trust Center Support * Contact Us * Customer Portal * Atlas Status * Paid Support Social * Github * Stack Overflow * LinkedIn * Youtube * Twitter * Twitch * Facebook © 2023 MongoDB, Inc. PRIVACY PREFERENCE CENTER "Cookies" are small files that enable us to store information while you visit one of our websites. When you visit any website, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies, but essential cookies are always enabled. Click on the different category headings to find out more and change our default settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer. MongoDB Privacy Policy Allow All MANAGE CONSENT PREFERENCES STRICTLY NECESSARY COOKIES Always Active These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the site will not then work. These cookies do not store any personally identifiable information. PERFORMANCE COOKIES Performance Cookies These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us to know which pages are the most and least popular and see how visitors move around the site. All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies we will not know when you have visited our site, and will not be able to monitor its performance. FUNCTIONAL COOKIES Functional Cookies These cookies enable the website to provide enhanced functionality and personalisation. They may be set by us or by third party providers whose services we have added to our pages. If you do not allow these cookies then some or all of these services may not function properly. TARGETING COOKIES Targeting Cookies These cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They do not store directly personal information, but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising. SOCIAL MEDIA COOKIES Social Media Cookies These cookies are set by a range of social media services that we have added to the site to enable you to share our content with your friends and networks. They are capable of tracking your browser across other sites and building up a profile of your interests. This may impact the content and messages you see on other websites you visit. If you do not allow these cookies you may not be able to use or see these sharing tools. BACK BUTTON PERFORMANCE COOKIES Vendor Search Search Icon Filter Icon Clear checkbox label label Apply Cancel Consent Leg.Interest checkbox label label checkbox label label checkbox label label Confirm My Choices By clicking "Accept All Cookies", you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. You can enable and disable optional cookies as desired. Read our Privacy Policy. Read our Privacy Policy Manage Cookies Accept All Cookies