我有两个数组,一个共同的字段成员.如何轻松合并主题?
例如:
var arr1 = [{
"member" : ObjectId("57989cbe54cf5d2ce83ff9d6"),
"bank" : ObjectId("575b052ca6f66a5732749ecc"),
"country" : ObjectId("575b0523a6f66a5732749ecb")
},
{
"member" : ObjectId("57989cbe54cf5d2ce83ff9d8"),
"bank" : ObjectId("575b052ca6f66a5732749ecc"),
"country" : ObjectId("575b0523a6f66a5732749ecb")
}];
var arr2 = [{
"member" : ObjectId("57989cbe54cf5d2ce83ff9d6"),
"name" : 'xxxxxx',
"age" : 25
},
{
"member" : ObjectId("57989cbe54cf5d2ce83ff9d8"),
"name" : 'yyyyyyyyyy',
"age" : 26
}];
Run Code Online (Sandbox Code Playgroud)
预期:
var merge = [{
"member" : ObjectId("57989cbe54cf5d2ce83ff9d6"),
"bank" : ObjectId("575b052ca6f66a5732749ecc"),
"country" : ObjectId("575b0523a6f66a5732749ecb"),
"name" : 'xxxxxx',
"age" : 25
},
{
"member" : ObjectId("57989cbe54cf5d2ce83ff9d8"),
"bank" …Run Code Online (Sandbox Code Playgroud) 我想将4个对象数组合并为一个数组
例如: 4个数组
var arr1 =[
{ memberID : "81fs", RatingCW:4.5},
{ memberID : "80fs", RatingCW:4},
{ memberID : "82fs", RatingCW:5 },
{ memberID : "83fs", RatingCW:3},
{ memberID : "84fs", RatingCW:4.7}
];
var arr2 =[
{ memberID : "80fs", ratingWW: 4},
{ memberID : "81fs", ratingWW: 4.5},
{ memberID : "83fs", ratingWW: 3},
{ memberID : "82fs", ratingWW: 5},
{ memberID : "84fs", ratingWW: 3.5}
];
var arr3 = [
{ memberID : "80fs", incoCW:4},
{ memberID : "81fs", …Run Code Online (Sandbox Code Playgroud) 我Unhandled rejection MongoError: cannot connect to server在运行我的meanjs项目时得到了.
以前运行正常,但当更新nodejs 5.11.1,mongodb 3.2.6,"mongoose": "^4.4.16"和"connect-mongo": "^1.1.0",那么这个错误得到.
未处理的拒绝MongoError:无法在indexInformation(/ home/shaishab /)上的Collection.listIndexes(/home/shaishab/Project/Open-Source/BS-Commerce/node_modules/mongodb/lib/collection.js:1750:11)连接到服务器项目/开源/ BS-Commerce/node_modules/mongodb/lib/db.js:1625:25)在Db.indexInformation(/ home/shaishab/Project/Open-Source/BS-Commerce/node_modules/mongodb/lib/db.js:1589:44)在Db.ensureIndex(/ home/shaishab /)的ensureIndex(/home/shaishab/Project/Open-Source/BS-Commerce/node_modules/mongodb/lib/db.js:1082:8)项目/开源/ BS-Commerce/node_modules/mongodb/lib/db.js:1058:44)在ensureIndex(/ home/shaishab/Project/Open-Source/BS-Commerce/node_modules/mongodb/lib/collection. js:1820:13)在MongoStore.setAutoRemoveAsync(/ home/shaishab /)的Collection.ensureIndex(/home/shaishab/Project/Open-Source/BS-Commerce/node_modules/mongodb/lib/collection.js:1808:44)项目/开源/ BS-Commerce/node_modules/connect-mongo/src/index.js:123:40)在MongoStore.handleNewConnectio MongoStore的nAsync(/home/shaishab/Project/Open-Source/BS-Commerce/node_modules/connect-mongo/src/index.js:116:18)(/ home/shaishab/Project/Open-Source/BS-Commerce /node_modules/connect-mongo/src/index.js:95:26)在Object的module.exports(/home/shaishab/Project/Open-Source/BS-Commerce/config/express.js:101:10).(/home/shaishab/Project/Open-Source/BS-Commerce/server.js:31:38)在Module._compile(module.js:413:34)的Object.Module._extensions..js(module.js) :422:10)
在配置文件代码中
var session = require('express-session'),
MongoStore = require('connect-mongo')(session),
mongoose = require('mongoose');
var db = mongoose.connect('dbUrl');
app.use(session({
saveUninitialized: true,
resave: true,
secret: config.sessionSecret,
store: new MongoStore({
db: db.connection.db,
collection: config.sessionCollection
})
}));
Run Code Online (Sandbox Code Playgroud)
谁能帮我 ?
我有一个成员集合,并按特定条件查找成员,在获得成员后,我需要为每个成员进行一些计算.计算需要查询同一个集合.
我的过程是
var eachMemberInfo = [];
var members = db.collection('member').find({ createdDate: currentDate, country: 'BD'}).toArray();
members.forEach(function(doc) {
var result = db.collection('member').aggregate([
{ $match: { memberType: doc.memberType, country : doc.country } },
{
$group: {
_id: {memberType:"$memberType",country:"$country"},
memberCount: { $sum: {$cond:[{$gt: ["$numberOfInvitees",0]},1,0]} },
lessCount: { $sum: {$cond:[{$and:[{$lt:["$numberOfInvitees", doc.numberOfInvitees]}, {$gt: ["$numberOfInvitees",0]}]},1,0]} },
sameCount: { $sum: {$cond:[{$eq: ["$numberOfInvitees",doc.numberOfInvitees]},1,0]} }
}
}
]).toArray();
eachMemberInfo.push({memberId:doc.memberId,memberCount: result[0].memberCount, lessCount: result[0].lessCount});
});
Run Code Online (Sandbox Code Playgroud)
我的问题是如何使用单个聚合查询来执行此操作?
任何人都可以帮助我:)
例如:
会员集合如:
[{
"_id" : ObjectId("57905b2ca644ec06142a8c06"),
"memberID" : 80,
"memberType" : "N",
"numberOfInvitees" : …Run Code Online (Sandbox Code Playgroud) 我想找到那些没有通过单个查询邀请任何用户的用户(使用聚合).
例如:我在DB中有4个用户
{
"_id" : ObjectId("581a18d41b6c5c752f11c87a"),
"name": "aaa",
"invitedBy": ObjectId("5808f53d28c14ee470856d8b")
},
{
"_id" : ObjectId("581a1a671b6c5c752f11c87b"),
"name": "bbb",
"invitedBy": ObjectId("581a18d41b6c5c752f11c87a")
},
{
"_id" : ObjectId("581a1a671b6c5c752f11c87c"),
"name": "ccc",
"invitedBy": ObjectId("581a18d41b6c5c752f11c87a"),
},
{
"_id" : ObjectId("581a1a671b6c5c752f11c87d"),
"name": "ddd",
"invitedBy": ObjectId("581a1a671b6c5c752f11c87b"),
}
Run Code Online (Sandbox Code Playgroud)
这里
1- aaa邀请了bbb和ccc用户
2- bbb邀请ddd用户
3-但是ccc和ddd用户没有邀请任何人
所以我想pic ccc和ddd用户
如果可以使用聚合会更好,因为我需要对选定的数据执行一些操作.
当我们$lookup在MongoDB的聚合查询中使用时,我们使用这种格式
{
$lookup:
{
from: "users",
localField: "userId",
foreignField: "_id",
as: "user"
}
}
Run Code Online (Sandbox Code Playgroud)
其中user作为对象数组返回,然后我们需要$arrayElemAt在$project舞台上使用一段时间以作为单个对象返回。喜欢
{
$project:
{
user:
{
$arrayElemAt: [ "$user", 0 ]
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我们如何可以返回user为单个对象,而不是阵列的$lookup阶段?
我有这个用于分享照片的网络应用程序.
现在我有这条路线应该从以下数组返回所有用户的照片.
路线:
router.get('/getphotos',function(req, res){
var reqPhotos = [];
console.log( "\n" + req.body.username + "\n");
try{
for(x =0; x < req.body.following.length; x++){
reqPhotos.push({username: req.body.following[x].username});
}
}
catch(err){
console.log(err);
}
Photo.find({username: reqPhotos}).exec(function(err, allPhotos){
if(err){console.log(err);}
else{
res.json(allPhotos);
}
});
});
Run Code Online (Sandbox Code Playgroud)
我发现req.body.following是未定义的.这是我用angular调用它的方式:
$scope.getPhotos = function(){
if($scope.identification){
flng = angular.copy($scope.identification.following);
flng.push($scope.identification.username);
var data = {username: $scope.identification.username, token: $scope.identification.token, following: flng}
//IDENTIFICATION HAS ALL THE INFO.
$http.get('/users/getphotos', data).success(function(response){
$scope.photos = response;
});
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况以及如何解决?
谢谢!