我有一个名为col
有看起来像这样的删除与数组字段的大小小于3个文件在MongoDB中
{
{
intField:123,
strField:'hi',
arrField:[1,2,3]
},
{
intField:12,
strField:'hello',
arrField:[1,2,3,4]
},
{
intField:125,
strField:'hell',
arrField:[1]
}
}
现在我想从收集col
在阵列的其中size
删除文档的文档的MongoDB集合场不到2
所以我写了一个查询,看起来像这样
db.col.remove({'arrField':{"$size":{"$lt":2}}})
现在这查询不做任何事情。我检查了db.col.find()
,它返回所有文件。这个查询有什么问题?
但正如接受的答案所说,你不能范围查询$大小,所以这将无法正常工作。 – UpTheCreek
这绝对有效。这不是本地范围查询,它只是您感兴趣的所有$ size值的普通旧ORing。不要说“给我所有带有arrField $ size 0-2的文档”,你可以要求“所有带有arrField $ size 0,arrField $ size 1或者arrField $ size 2的文档”。显然这只有在您感兴趣的$ size值的范围很小时才可行,但在这些情况下,它工作得非常好,并且可能比添加arrFieldSize计数器或类似工具更方便。 –
对不起 - 我的错。如果您进行编辑,我可以删除我之前给出答案的downvote。 – UpTheCreek