[英]How to perform an $or query in Mongoose/MongoDB?
我需要根据$or
语句在我的 MongoDB 集合中获取各种项目。
按照这些官方文档,我构建的查询看起来可以接受,但第一个$gt
语句没有得到满足。 它正在返回quantity
为零的项目。
let query = {};
query.$or = [ { 'quantity': { $gt: 0 } }, { type: { $in: [ITEM_TYPE_A, ITEM_TYPE_B] } }];
db.Items.find(query).then( res => res)
可能是将新的键/值对附加到查询对象的dot
语法吗? 不幸的是,这个查询只是基于if
语句附加到query
对象的众多查询之一。 前任。 if (something) query.field = value
我不知道为什么,但使用Object.assign
方法修复了我的查询。
代替:
query.$or = [ { 'quantity': { $gt: 0 } }, { type: { $in: [ITEM_TYPE_A, ITEM_TYPE_B] } }]
我做了:
query = Object.assign({}, query, { $or: { 'quantity': { $gt: 0 } }, { type: { $in: [ITEM_TYPE_A, ITEM_TYPE_B]}
您可以使用以下之一
let query = {};
query = {...query,$or:[ { 'quantity': { $gt: 0 } }, { type: { $in: [ITEM_TYPE_A, ITEM_TYPE_B] } }]};
或者
query = Object.assign({}, query, { $or: [ { 'quantity': { $gt: 0 } }, { type: { $in: [ITEM_TYPE_A, ITEM_TYPE_B] } }]});
或者
query["$or"] = [ { 'quantity': { $gt: 0 } }, { type: { $in: [ITEM_TYPE_A, ITEM_TYPE_B] } }];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.