mongoose查询数组的问题

我在mongoose的schema里定义了如下两个字段

var PaperSchema = new mongoose.Schema({
    projectID: []
    keywords: []
});

clipboard.png

请问应该如何查找projectID里有123的这条文档呢

Paper.find({projectID:'123})
这样写会报错,请问正确写法是什么
阅读 4.5k
1 个回答
//这是数据库的已储存的文档
[ { _id: 59380a577941a634732a33c
    __v: 0,
    keywords: [ 1, 2, 3 ],
    projectID: [ 123, 456 ] },
  { _id: 59380aa93a6f20030763439
    __v: 0,
    keywords: [ 1, 2, 4 ],
    projectID: [ 123, 456 ] },
  { _id: 59380be370192984caec693
    __v: 0,
    keywords: [ 1, 2, 3 ],
    projectID: [ 123, 456 ] } ]
//这是查询代码:想要获取keywords里含有3的文档
const mongoose = require('mongoose');
const PaperSchema = new mongoose.Schema({
    projectID:[],
    keywords:[]

})
const Paper = mongoose.model('Paper',PaperSchema);

mongoose.connect('mongodb://localhost:27017/Test_DB', function(error){
    if(error) console.log('Failed to connect');
    else {
        Paper.where("keywords").in([3]).exec(function(err,docs){
            console.log(docs)        
        })
    }
});
//这是查询结果
[ { _id: 59380a577941a634732a33c6
    __v: 0,
    keywords: [ 1, 2, 3 ],
    projectID: [ 123, 456 ] },
  { _id: 59380be370192984caec6933
    __v: 0,
    keywords: [ 1, 2, 3 ],
    projectID: [ 123, 456 ] } ]

可以看出,这里和mongodb的写法是一样的