Mongoose .dot表示法相当于$和+ $ in + $或?

时间:2014-06-25 20:32:56

标签: node.js mongodb mongoose

我期待'.find'所有文档,'.where'用户名是'.in' to:数组和upVoted:true '.or' noVote:true,所有按降序排序

这是一个示例文档结构:

to: [String],
voting: {
  upVoted: Boolean,
  noVote: Boolean,
  downVoted: Boolean
},
rank: Number

此查询有效,但如何在Mongoose .dot notation中编写:

Story.find({
    $and: [
          { to: { $in: [ 'user1' ] } },
        { $or: [{ 'voting.upVote': true }, { 'voting.noVote': true }] }
    ]
}, function (err, stories) {

我们正在研究用于排序此

的正确语法

1 个答案:

答案 0 :(得分:1)

您的原始查询可以变得更简单,因为您不需要$和(它在MongoDB中隐含)。此外,如果您只查找ṫo数组中的一个用户,那么您也不需要$ in运算符。

{
    to: 'user1',
    $or: [{ 'voting.upVote': true }, { 'voting.noVote': true }] 
}

使用Mongoose查询API:

var query = Story.find();
query.where('to', 'user1');
query.or({ 'voting.upVote': true }, { 'voting.noVote': true });
query.exec(function (err, doc) {
    if (err) ...
});

或者如果您正在寻找多个用户,请替换:

query.where('to', 'user1');

with:

query.where('to').in(['user1', 'user2']);