【发布时间】:2016-12-28 00:17:45
【问题描述】:
我正在尝试在 mongo db 中检索数组中的元素。我想检索与模式不匹配的前 15 个元素
假设我有
{
"_id" : ObjectId("s4dcsd5s4d6c54s6d"),
"items" : [
{
type : "TYPE_1",
text : "blablabla"
},
{
type : "TYPE_2",
text : "blablabla"
},
{
type : "TYPE_3",
text : "blablabla"
},
{
type : "TYPE_1",
text : "blablabla"
},
{
type : "TYPE_2",
text : "blablabla"
},
{
type : "TYPE_1",
text : "blablabla"
}
]
}
因此,与不匹配的元素相比,目前我要匹配的元素更多,这就是我使用 nin 的原因。但这是为了简化
如果我使用
db.history.find({ "_id" : ObjectId("s4dcsd5s4d6c54s6d")}, { "items" : { "$elemMatch" : { "type" : { "$nin" : [ "TYPE_2" , "TYPE_3"]}}}, "items" : { $slice : [0, 2]}}).pretty()
似乎没有考虑元素匹配(如果我将元素匹配放在切片之后,也是相反的)
如果我这样做:
db.history.find({ "_id" : ObjectId("s4dcsd5s4d6c54s6d")}, { "items" : { "$elemMatch" : { "type" : { "$nin" : [ "TYPE_2" , "TYPE_3"]}}, $slice : [0, 2]}}).pretty()
mongo 抛出错误
你知道我该怎么做吗?
非常感谢
【问题讨论】:
标签: mongodb