我正在尝试使用 findOne() 上的投影参数从文档 (stats) 中提取单个字段,但它似乎只是返回整个文档。我在 Node.js 中使用版本“mongodb”:“^3.4.1”
这是文档结构
{ _id: 5e563015fa9a1a0134cac3cb,
username: 'user1',
password: '1234',
email: 'user@email.com',
stats:
{ totalViewed: 122,
totalUnique: 4,
tknow: 80,
tdknow: 42,
setCnt: 78 },
progress:
[ { cardId: 1001, knowCnt: 3, dknowCnt: 4 },
{ cardId: 1016, knowCnt: 0, dknowCnt: 0 } ] }
Run Code Online (Sandbox Code Playgroud)
这是代码:
var findOneDoc = function() {
db.collection("testusers").findOne(
{ username: "user1" },
{ stats: 1 }, //field to return
function(err, result) {
if (err) {
console.log("Error: ", err);
}
console.log("Success: ", …Run Code Online (Sandbox Code Playgroud) 我可以很容易地匹配单个属性
var peoples = [
{ "name": "bob", "dinner": "pizza" },
{ "name": "john", "dinner": "sushi" },
{ "name": "larry", "dinner": "hummus" },
{ "name": "john", "dinner": "pie" }
];
$.each(peoples, function(i, val) {
$.each(val, function(key, name) {
if (name === "john")
console.log(key + " : " + name);
});
});
Run Code Online (Sandbox Code Playgroud)
但是由于有 2 个 johns,我如何匹配特定的一个(例如喜欢寿司的 john)然后返回整个匹配的对象(在 json 中)?我尝试在 if 语句中添加另一个条件,但这似乎不起作用。
谢谢