本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
$setDifference
4.0 版的新功能。
Amazon DocumentDB 中的$setDifference運算子用於比較兩組,並傳回第一組而非第二組中的元素。此運算子適用於尋找兩組之間的唯一元素。
參數
-
firstSet :要比較的第一個集合。
-
secondSet :要比較的第二組。
範例 (MongoDB Shell)
下列範例示範如何使用 $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()