gpt4 book ai didi

node.js - Mongo +检查存在的多个字段

转载 作者:可可西里 更新时间:2023-11-01 10:42:00 26 4
gpt4 key购买 nike

我正在使用 mongo 和 nodejs。

我有数组列表:

var checkFields = ["field1","field2","field3"];

我尝试获取具有数组列表字段且用户字段等于 admin 的记录数。

示例数据:

[
{
"checkFields": {
"field1": "00124b3a5c31",
"user": "admin"
}
},
{
"checkFields": {
"field2": "00124b3a5c31",
"user": "admin"
}
},
{
"checkFields": {
"field1": "00124b3a5c31",
"user": "regular"
}
}
]

查询:

db.collection_name.find(
{"checkFields.user" : "admin"}
{ "checkFields.field1": { $exists: true} }
)

预期结果:

结果是获取数组 list(checkFields) 中与字段匹配的行数。

最佳答案

为字段存在性检查列表构建一个 $or 数组是正确的方法,但假设您使用的是当前的 node.js 构建,您可以将查询创建简化为:

var checkFieldsLists = checkFields.map(field => ({
['checkFields.' + field]: {$exists: true}
}));
var query = {
$or: checkFieldsLists,
'checkFields.user': 'admin'
}

这会删除“用户是管理员”检查的多余 $or,这样您还可以删除外部 $and,因此生成的查询是:

{ '$or':
[ { 'checkFields.field1': { '$exists': true } },
{ 'checkFields.field2': { '$exists': true } },
{ 'checkFields.field3': { '$exists': true } } ],
'checkFields.user': 'admin' }

关于node.js - Mongo +检查存在的多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39363578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com