$setDifference - Amazon DocumentDB

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

$setDifference

4.0 版的新增内容。

Amazon DocumentDB 中的$setDifference运算符用于比较两个集合,并返回第一个集合中但不在第二个集合中的元素。此运算符对于查找两个集合之间的唯一元素很有用。

参数

  • firstSet:要比较的第一组。

  • secondSet:要比较的第二组。

示例(MongoDB 外壳)

以下示例演示如何使用$setDifference运算符来查找两个集合之间的唯一元素。

创建示例文档

db.collection.insertMany([ { _id: 1, fruits: ["apple", "banana", "cherry", "date"] }, { _id: 2, fruits: ["banana", "cherry", "date", "elderberry"] } ]);

查询示例

db.collection.aggregate([ { $project: { uniqueFruits: { $setDifference: ["$fruits", ["banana", "cherry", "date"]] } } } ]);

输出

[ { "_id": 1, "uniqueFruits": ["apple"] }, { "_id": 2, "uniqueFruits": ["elderberry"] } ]

该查询执行以下步骤:

1. 它使用$project舞台uniqueFruits为每个文档创建一个新字段。

2. $setDifference运算符将fruits数组与数组进行比较,["banana", "cherry", "date"]并返回fruits数组中唯一的元素。

代码示例

要查看使用该$setDifference命令的代码示例,请选择要使用的语言的选项卡:

Node.js

以下是如何在 Node.js 应用程序中使用$setDifference运算符的示例:

const { MongoClient } = require('mongodb'); async function main() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const collection = db.collection('mycollection'); // Insert sample documents await collection.insertMany([ { _id: 1, fruits: ["apple", "banana", "cherry", "date"] }, { _id: 2, fruits: ["banana", "cherry", "date", "elderberry"] } ]); // Query using $setDifference const result = await collection.aggregate([ { $project: { uniqueFruits: { $setDifference: ["$fruits", ["banana", "cherry", "date"]] } } } ]).toArray(); console.log(result); await client.close(); } main();
Python

以下是如何在 Python 应用程序中使用$setDifference运算符的示例:

from pymongo import MongoClient def main(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client['test'] collection = db['mycollection'] # Insert sample documents collection.insert_many([ {'_id': 1, 'fruits': ["apple", "banana", "cherry", "date"]}, {'_id': 2, 'fruits': ["banana", "cherry", "date", "elderberry"]} ]) # Query using $setDifference result = list(collection.aggregate([ { '$project': { 'uniqueFruits': {'$setDifference': ['$fruits', ["banana", "cherry", "date"]]} } } ])) print(result) client.close() if __name__ == '__main__': main()