Node.js 如何在mongodb中使用文档值长度进行搜索查询

Node.js 如何在mongodb中使用文档值长度进行搜索查询,node.js,mongodb,mongoose,schema,Node.js,Mongodb,Mongoose,Schema,在我的收藏中,我有一些小组,他们可以将成员限制在其中。我想通过搜索表单中给定的数字查询所有有足够空间的组。我在API中使用mongoose和node 因此,当组中有2个成员时,限制为3,用户搜索组中剩下的2个位置。这群人不会出现,但会出现其他人 我如何质疑这一点?我已经找到了类似于query的东西。$expr={$gt:[{$strLenCP:$members},params.searchValue/*2在我的示例中*/]}”+params.searchValue但那不起作用。你试错了。最好使用

在我的收藏中,我有一些小组,他们可以将成员限制在其中。我想通过搜索表单中给定的数字查询所有有足够空间的组。我在API中使用mongoose和node

因此,当组中有2个成员时,限制为3,用户搜索组中剩下的2个位置。这群人不会出现,但会出现其他人

我如何质疑这一点?我已经找到了类似于
query的东西。$expr={$gt:[{$strLenCP:$members},params.searchValue/*2在我的示例中*/]}
这里是我的猫鼬模式:

let GroupSchema = new Schema({
  name: {
    type: String,
    required: true
  },
  status: {
    type: String,
    required: true
  },
  game: {
    type: Schema.Types.ObjectId,
    ref: 'Games',
    required: true
  },
  alias: {
    type: String,
    required: true,
    unique: true
  },
  owner: {
    type: Schema.Types.ObjectId,
    ref: 'User'
  },
  range: Number,
  image: String,
  description: String,
  members: [{
    type: Schema.Types.ObjectId,
    ref: 'User'
  }],
  updated: Date,
  created: Date
});

你找错操作员了。文档中的
members
属性是一个“数组”。在所有MongoDB版本中,都有查询数组长度的成熟方法。也就是说,如果长度(成员数)是对您很重要的查询类型,您可能“应该”创建一个文档属性来指示长度。@NeilLunn我尝试了这个答案,并将其更新为我的公式:
query.$where=“(this.members.length-this.range)>”+params.searchValue但那不起作用。你试错了。最好使用
$exists
{“members.0”:{“$exists”:true},“members.2”:{“$exists”:true}
表示长度在2到3个项目之间的数组。还有一些“其他”建议不使用
$where
,它们也适用于您的情况。与文档中的字段进行比较是另一个条件。您确实不应该简单地存储一个
“availableSpots”
数字,在向数组添加新成员时,您只需将该数字递减即可。