Mongodb Mongoldb查找包含8个字段中多个字段的文档
数据源中发生数据损坏 我们有a,b,c,d,e,f,g,h字段 都是0或1的整数值 一个文档应该只有一个值为1的字段(共8个字段)。由于损坏,它有多个值为1的字段 如何查找包含多个字段的文档Mongodb Mongoldb查找包含8个字段中多个字段的文档,mongodb,Mongodb,数据源中发生数据损坏 我们有a,b,c,d,e,f,g,h字段 都是0或1的整数值 一个文档应该只有一个值为1的字段(共8个字段)。由于损坏,它有多个值为1的字段 如何查找包含多个字段的文档 我想做下面的工作-添加所有八个字段并检查总和是否大于1如果我理解正确,您只需添加所有字段,然后匹配计数大于1的所有文档,类似这样 db.getCollection("your coll").aggregate([ {$project:{ count_feilds_values:{ $add: [ "
我想做下面的工作-添加所有八个字段并检查总和是否大于1如果我理解正确,您只需添加所有字段,然后匹配计数大于1的所有文档,类似这样
db.getCollection("your coll").aggregate([
{$project:{
count_feilds_values:{ $add: [ "$a", "$b" ,"$c"] }
}},
{$match:{count_feilds_values:{$gt:1}}}])
使用带有
$objectToArray
+$filter
运算符的MongoDB聚合可以实现这一点:
db.collection.aggregate([
{
$addFields: {
tmp: {
$filter: {
input: {
$objectToArray: "$$ROOT"
},
cond: {
$eq: [
"$$this.v",
1
]
}
}
}
}
},
{
$match: {
$expr: {
$ne: [
{
$size: "$tmp"
},
1
]
}
}
},
{
$unset: "tmp"
}
])
你不能求和,因为你有0!!除了这8个字段中的一个或一组字段之外,文档中还有其他字段吗?像示例I、k、L,忘记默认的
\u id
。@whoami我还有其他字段。求和怎么不起作用呢?假设你加上a:1+b:0等于1,那么你假设有多少个字段?这意味着你可以有这样一个文档:{id:123,a:1,b:0,c:0}
,但不是像这样的{id:1234,a:1,b:0,c:0,d:1}
?好的,问题有点不清楚。总和对我来说是个不错的选择。谢谢。我知道了。我正在寻找一个解决方案删除或设置为0的随机值与1@Gibbs:您的mongoDB版本是什么?Amit-此查询不会提供所需的o/p!!选中此项:,OP也已对此进行了查询!!!