#arrays #mongodb #morphia
#массивы #mongodb #morphia
Вопрос:
хорошо, у меня есть это (снова новичок)
.
// ADD FRIEND TO FRIEND LIST
Query<FriendList> query1 = mongo.createQuery(FriendList.class);
query1.field("lowerCaseUserName").equal(on.lowerCaseUserName);
query1.field("passwordHash").equal(on.passwordHash);
query1.field("uuid").equal(on.uuid);
UpdateOperations<FriendList>up1=mongo.createUpdateOperations(FriendList.class).add("friendList",buddyUuid,false);
Я вставляю друга в Array
. «Список друзей» — это String Array
.
Хотелось бы иметь возможность реализовать удаление сейчас.
Могу ли я просто написать тот же код и заменить « .add
» на removexxx … что-нибудь? Я думаю, что это хорошая среда разработки, но, возможно, нет 🙂
@Entity
public class FriendList {
@Id private ObjectId id;
public Date lastAccessedDate;
@Indexed(name="uuid", unique=true,dropDups=true)
private String uuid;
@Indexed(value=IndexDirection.ASC, name="lowerCaseUserName", unique=true,dropDups=true)
public String lowerCaseUserName;
public String passwordHash = "";
List<String> friendList;
public void setUuid(String uuid) {
this.uuid = uuid;
}
public List<String> getFriendList() {
return friendList;
}
public void insertFriend(String friend) {
this.friendList.add(friend);
}
// @PrePersist void prePersist() {
// lastAccessedDate = new Date();
// }
}
Ответ №1:
Query<FriendList> query1 = mongo.createQuery(FriendList.class);
query1.field("lowerCaseUserName").equal(on.lowerCaseUserName);
query1.field("passwordHash").equal(on.passwordHash);
query1.field("uuid").equal(on.uuid);
UpdateOperations<FriendList>up1=mongo.createUpdateOperations(FriendList.class).removeAll("friendList",buddyUuid);
Это должно удалить строку buddyUuid
из списка.
Если бы вы могли гарантировать, что friendList
содержит уникальные идентификаторы UUID, вы могли бы использовать removeFirst || removeLast
метод.
Удалить первый / последний / Все
Надеюсь, это поможет!
Комментарии:
1. Спасибо. Я не был уверен в этом, потому что в примере не показано, как создается «Запрос обновления». Я протестировал это сейчас, и это работает отлично.