簡體   English   中英

獲取集合中所有不符合條件的文檔

[英]Get all documents in collection that do not match criteria

我有給定的查詢criteria ,該criteria可能會也可能不會返回collection某些文檔。 我想得到所有不符合criteria的文件。 因此,基本上,如果我使用collection.find(criteria)找不到該collection中的所有文檔。

我有兩種方法:

  1. 否定查詢。 我嘗試了collection.find({$not: criteria})拋出錯誤。
  2. 獲取符合criteria所有文檔並減去文檔: collection.find() \\ collection.find(criteria)以“ \\”為補碼運算符。 -但是我不知道該怎么做。

您能給我一個Javascript / Node中的代碼示例嗎?

我認為您的查詢必須是這樣的:

db.collection.find( { field: { $nin: [ "value_1", "value_2" ] } } );

$not用於與其他比較運算符混合,例如:

db.inventory.find( { price: { $not: { $gt: 1.99 } } } )

嘗試使用$not時引發的錯誤(無論可能是什么)表明您沒有正確使用它。 Mongo $ not文檔顯示以下示例:

db.inventory.find( { price: { $not: { $gt: 1.99 } } } )

如果您的criteria是一個復雜的查詢,這將不起作用。 您需要將其分解為每個字段的單個條件,並適當地應用它。

另外,要查找另一組中不存在的一組項目( 補數 ),可以嘗試如下操作:

var setA = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
var setB = ['c', 'd', 'g'];

var complement = setA.filter(function (item) {
    return setB.indexOf(item) === -1;
}); 

有關Mongo的更具體的實現,請查看$ setDifference操作,該操作:

接受兩個集合並返回一個數組,其中包含僅存在於第一集合中的元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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