正在验证MongoDB中数组项的类型

正在验证MongoDB中数组项的类型,mongodb,validation,bson,Mongodb,Validation,Bson,我正在使用MongoDB 4.0 我的集合中的文档可以有一个包含整数数组的numbers字段。我们可以使用下面的代码验证数字确实是一个数组,但是否可以确保它们是整数 properties: { numbers: { bsonType: 'array' } } 我已经看过了和,但在这两个方面都没有任何说明。一个示例显示了一个用方括号括起来的字段([“double”]),但该类型没有被描述为数组,添加括号似乎没有任何效果。似乎还有另一个属性,items,您可以在其中为数组中的项定

我正在使用MongoDB 4.0

我的集合中的文档可以有一个包含整数数组的
numbers
字段。我们可以使用下面的代码验证
数字
确实是一个数组,但是否可以确保它们是整数

properties: {
  numbers: {
    bsonType: 'array'
  }
 }

我已经看过了和,但在这两个方面都没有任何说明。一个示例显示了一个用方括号括起来的字段(
[“double”]
),但该类型没有被描述为数组,添加括号似乎没有任何效果。

似乎还有另一个属性,
items
,您可以在其中为数组中的项定义方案

properties: {
  numbers: {
    bsonType: 'array'
    items: {
      bsonType: 'int'
    }
  }
}

此属性似乎是

似乎还有另一个属性,
items
,您可以在其中为数组中的项定义方案

properties: {
  numbers: {
    bsonType: 'array'
    items: {
      bsonType: 'int'
    }
  }
}
此属性似乎

您需要在“
数组
”后面加一个“
”字符,如下所示:

properties: {
  numbers: {
    bsonType: 'array' ,
    items: {
      bsonType: 'int'
    }
  }
}
在“
数组”
”之后需要一个“
”字符,如下所示:

properties: {
  numbers: {
    bsonType: 'array' ,
    items: {
      bsonType: 'int'
    }
  }
}

这真的有效吗?我正在尝试这种语法,除非数组为空(这是有效的),否则文档将不会验证。如果我有[200300]它被宣布无效…是的,它是。但是在使用mongo shell时,必须使用numberprint()显式转换int,因为shell将所有数值默认为double。我讨厌mongo的事情越来越多……这真的管用吗?我正在尝试这种语法,除非数组为空(这是有效的),否则文档将不会验证。如果我有[200300]它被宣布无效…是的,它是。但是在使用mongo shell时,必须使用numberprint()显式转换int,因为shell将所有数值默认为double。我讨厌mongo的东西越来越多,…
[“double”]
语法表明可能需要多种类型。
[“double”,“string”]
类型允许将double和string作为有效类型。我同意在处理数组类型时这会让人感到困惑。
[“double”]
语法表明可能需要多种类型。
[“double”,“string”]
类型允许将double和string作为有效类型。我同意在处理数组类型时这会让人困惑。我看不出和你的有什么区别,请避免使用已经提出的解决方案来回答。@Ruli He没有提出解决方案;他说,接受的答案需要在BSON条目之间加一个逗号才能在语法上有效。堆栈溢出的一个怪癖是对评论的信誉要求高于答案。标记为“非答案”,mods会处理它。编辑后会更有意义。Yes我看不出和您的答案有什么区别,请避免使用已经提出的解决方案回答。@Ruli He不是在提出解决方案;他说,接受的答案需要在BSON条目之间加一个逗号才能在语法上有效。堆栈溢出的一个怪癖是对评论的信誉要求高于答案。标记为“不是答案”,mods会处理它。编辑后会更有意义是的