查找 objA 与 objB 相同的所有文档的最佳方法是什么(键的顺序并不重要)?
灵感来自another question作者:@Digvijay,我正在寻找一种方法来比较 MongoDB 查询上的两个对象,但在 SO 上找不到相关的解决方案。
示例数据:
[
{
objA: {a: 1, b: 2},
objB: {a: 1, b: 2}
},
{
objA: {m: "g", c: 5},
objB: {c: 5, m: "g"}
},
{
objA: {m: "g", c: 7},
objB: {c: 5, m: "g"}
},
{
objA: {m: "g", c: 7},
objB: {b: "g", c: 7}
}
]
预期结果:
[
{
objA: {a: 1, b: 2},
objB: {a: 1, b: 2}
},
{
objA: {m: "g", c: 5},
objB: {c: 5, m: "g"}
},
]
最佳答案
你可以这样做:
$objectToArray
- 将 objA 和 objB 转换为数组。$setEquals
- 比较上述数组是否具有相同的不同元素。
db.collection.aggregate([
{
$match: {
$expr: {
$setEquals: [
{ $objectToArray: "$objA" },
{ $objectToArray: "$objB" }
]
}
}
}
])
关于mongodb - 如何比较 MongoDB 中的两个对象(忽略键的顺序)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74963395/