![](/img/trans.png)
[英]Lodash - How can I get all the object from a collection match an array of strings criteria
[英]Get all documents in collection that do not match criteria
我有給定的查詢criteria
,該criteria
可能會也可能不會返回collection
某些文檔。 我想得到所有不符合criteria
的文件。 因此,基本上,如果我使用collection.find(criteria)
找不到該collection
中的所有文檔。
我有兩種方法:
collection.find({$not: criteria})
拋出錯誤。 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.