Mongodb 具有限制和跳过的多个条件的Mongo查询
Mongodb 具有限制和跳过的多个条件的Mongo查询,mongodb,mongodb-query,Mongodb,Mongodb Query,db中所有集合的文档格式如下: { "_id": { "$oid": "5e0983863bcf0dab51f2872b" }, "word": "never", // get the `word` value for each of below queries "wordset_id": "a42b50e85e", "meanings": [{ "id": "1f1bca9d9f", "def": "no
db
中所有集合的文档格式如下:
{
"_id": {
"$oid": "5e0983863bcf0dab51f2872b"
},
"word": "never", // get the `word` value for each of below queries
"wordset_id": "a42b50e85e",
"meanings": [{
"id": "1f1bca9d9f",
"def": "not ever",
"speech_part": "adverb",
"synonyms": ["ne'er"]
}, {
"id": "d35f973ed0",
"def": "not at all",
"speech_part": "adverb"
}]
}
我正在尝试查询单词
1) 其中,单词length
是4
,speech\u part
是名词包含ac
(%something%在sql中)(结果是jack
,…)
2) 如何在单个查询中添加所有三个以
开头、以
结尾、包含
(例如:以j
开头、包含ac
、以k
结尾将给出jack
)
我已经尝试了1)年,作为:
但是我没有得到这个结果,还有如何为聚合添加skip和limit,我应该使用facet
参考上述答案,我发现:
db.Order.aggregate([
{ '$match' : { "company_id" : ObjectId("54c0...") } },
{ '$sort' : { 'order_number' : -1 } },
{ '$facet' : {
metadata: [ { $count: "total" }, { $addFields: { page: NumberInt(3) } } ],
data: [ { $skip: 20 }, { $limit: 10 } ] // As shown here------
} }
] )
参考Pythonic
管道如下所示:
pipeline = [
{
'$match': {
"$expr": {"$eq": [{"$strLenCP": "$word"}, 4]},
'word': re.compile('ac'),
'meanings.speech_part': "noun"
}
}
]
删除此代码中的引号“/ac/”
,并将其更改为“word”:/ac/
,它就可以工作了。@prasad_uu如何在compass中选中此项以获得结果,compass-->聚合-->?有一个选择聚合阶段下拉框。单击该按钮,选择阶段并添加聚合代码。然后使用下面的添加阶段按钮添加更多阶段。我尝试了完全相同的方法,但没有结果。下面是使用说明。
pipeline = [
{
'$match': {
"$expr": {"$eq": [{"$strLenCP": "$word"}, 4]},
'word': re.compile('ac'),
'meanings.speech_part': "noun"
}
}
]