簡體   English   中英

Mongoose / MongoDB查詢.find()是否有int> 0?

[英]Mongoose / MongoDB query .find() any int > 0?

所以我有一個看起來像這樣的貓鼬模式。

var info = new mongoose.Schema(
{ '123': { available: { type: 'String' }, onOrder: { type: 'String' } },
  '456': { available: { type: 'String' }, onOrder: { type: 'String' } },
  '789': { available: { type: 'String' }, onOrder: { type: 'String' } }
});

我想在> 0的可用字段中查找並編號。在任何給定時間僅填充其中一些。 如果其中沒有整數,則“空”字符串將始終用數字值“ 0.00000000”填充。

我正在尋找一個查詢,它將查詢並找到不是0.00000000的字符串,或者可以將字符串轉換為整數,然后可以找到> 0的任何內容。

我覺得我首先想到的是基於字符串來查找它們,這在某種程度上來說是很棘手的,我正在尋找一種更永久的方式來從數據庫中檢索數字,就像這樣。

我已經嘗試使用$ in完成此操作,但無法使其正常工作。

您可以通過兩種方式執行此操作:1. $regexp 2. $where

  1. $regexp

檢查所有字符串內容是否為數字[0-9],並以非零或零或點開頭,后跟0-9

regexp將是/^[1-9][0-9]|[.0][1-9]/

  1. $where

使用parseFloat檢查它是否大於零

{ $where: function() { return parseFloat(this[123].available) > 0 } }

采集

  > db.info.find()
    { "_id" : ObjectId("5a5edabdfee4c182f509f3ea"), "123" : { "available" : "0.00000000", "onOrder" : { "type" : "xyz" } } }
    { "_id" : ObjectId("5a5edabdfee4c182f509f3eb"), "123" : { "available" : "0.00000010", "onOrder" : { "type" : "xyz" } } }
    { "_id" : ObjectId("5a5edabdfee4c182f509f3ec"), "123" : { "available" : "100000000", "onOrder" : { "type" : "xyz" } } }
    { "_id" : ObjectId("5a5edabdfee4c182f509f3ed"), "123" : { "available" : "abc", "onOrder" : { "type" : "xyz" } } }
    >

$regexp查找

> db.info.find( { "123.available" : /^[1-9][0-9]|[.0][1-9]/ } );
{ "_id" : ObjectId("5a5edabdfee4c182f509f3eb"), "123" : { "available" : "0.00000010", "onOrder" : { "type" : "xyz" } } }
{ "_id" : ObjectId("5a5edabdfee4c182f509f3ec"), "123" : { "available" : "100000000", "onOrder" : { "type" : "xyz" } } }
> 

$where查找

> db.info.find( { $where: function() { return parseFloat(this[123].available) > 0 } } );
{ "_id" : ObjectId("5a5edabdfee4c182f509f3eb"), "123" : { "available" : "0.00000010", "onOrder" : { "type" : "xyz" } } }
{ "_id" : ObjectId("5a5edabdfee4c182f509f3ec"), "123" : { "available" : "100000000", "onOrder" : { "type" : "xyz" } } }
> 
> 

暫無
暫無

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

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