簡體   English   中英

如何在 Mongoose/MongoDB 中執行 $or 查詢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM