gpt4 book ai didi

node.js - 在 Mongoose 中使用 AND 获取两个 OR 查询的结果

转载 作者:太空宇宙 更新时间:2023-11-03 23:32:23 24 4
gpt4 key购买 nike

我正在 Mongoose 中使用 AND 组合两个 OR 查询,但没有得到所需的结果

{
_id :"23432ferf",
"catId" : 21,
"attributes": [
{
"_id": "571237bfc02aad440c216f67",
"attributeValueM": "metal|Frame Material"
},
{
"_id": "571237bfc02aad440c216f66",
"attributeValueM": "green|color"
}
]
},
{
_id :"23432ferh",
"catId" : 21,
"attributes": [
{
"_id": "571237bfc02aad440c216f67",
"attributeValueM": "metal|Frame Material"
},
{
"_id": "571237bfc02aad440c216f66",
"attributeValueM": "blue|color"
}
]
}

现在通过 Mongoose 查询是

var condition =  [
{ $or: [{ 'attributes.attributeValueM' : 'wood|Frame Material' }, { 'attributes.attributeValueM' : 'metal/Frame Material' }] },
{ $or: [{ 'attributes.attributeValueM' : 'blue|color' }, {'attributes.attributeValueM' : 'green|color'}] }
];

Test.find("catID":21).and(condition).exec(function (err, results) {
... // not getting any document
});

如何将两个 OR 条件与 AND 条件结合起来? 已在 attribute.attributeValueM 上建立索引,并且正在使用下面给出的简单 AND 条件

[ { 'attributes.attributeValueM': 'green|color' },
{ 'attributes.attributeValueM': 'metal|Frame Material' } ]

请推荐

最佳答案

您可以使用类似的方式代替 Test.find("catID":21).and(condition)

Test.find({
$and: [
{ catID:21 },
{ $or: [{ "attributes.attributeValueM" : 'wood|Frame Material' }, { "attributes.attributeValueM" : 'metal/Frame Material' }] },
{ $or: [{ "attributes.attributeValueM" : 'blue|color' }, {"attributes.attributeValueM" : 'green|color'}] }
]
}).exec(function (err, results) {
// rest of code
});

关于node.js - 在 Mongoose 中使用 AND 获取两个 OR 查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36666726/

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